Laravel Excel Export With Number
Cara menambahkan nomer pada data hasil export menggunakan laravel-excel
Seperti tertulis pada dokumentasi diatas. Untuk membuat fitur export menggunakan laravel-excel sebenarnya cukup mudah. Kita hanya perlu untuk membuat class Export
dengan menjalankan perintah:
php artisan make:export UsersExport --model=User
Yang nantinya bisa kita panggil di dalam controller.
<?php
namespace App\Http\Controllers;
use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
class UsersController extends Controller
{
...
public function export()
{
return Excel::download(new UsersExport, 'users.xlsx');
}
}
Dengan class bawaan dari export tadi kita akan mendapatkan file .xlsx
berisi data di dalamnya.
Pada kasus tertentu, kita perlu untuk menampilkan juga nomor pada kolom paling kiri. Nah, disinilah kita akan bahas bagaimana caranya.
Langkah-langkah
Langkah pertama adalah dengan mengubah cara kita meng-export dari menggunakan implements toCollection
diganti menjadi implements FromQuery, WithMapping, WithHeadings, ShouldAutoSize
- Metode ini (setelah saya coba) hanya bisa dilakukan menggunakan interface
FromQuery
bukantoCollection
- Kita akan menggunakan interface
WithMapping
untuk mengisi kolomno
yang dibuat menggunakan interfaceWithHeadings
- interface
ShouldAutoSize
untuk menyesuaikan lebar kolom excel agar isi teksnya tidak melebihi kolom excel
Jadinya seperti ini:
<?php
namespace App\Exports;
use App\Models\User;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
class TarifExport implements FromQuery, WithHeadings, WithMapping, ShouldAutoSize
{
use Exportable;
public function headings(): array
{
return [
'no',
'nama',
'email',
];
}
public function map($users): array
{
// set number
static $number = 1;
return [
$number++,
$users->nama,
$users->email,
];
}
public function query()
{
return User::query();
}
}
Hasilnya akan muncul nomor urut seperti yang kita inginkan.
Silahkan dicoba.
Semoga Bermanfaat.
Selanjutnya kita akan membuat method untuk mendownload template excel yang biasa digunakan untuk melakukan import menggunakan laravel-excel.
Link akan tersedia disini.