Laravel Excel Export With Number

Cara menambahkan nomer pada data hasil export menggunakan laravel-excel

Syofyan Zuhad
2 min readFeb 13, 2023

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 bukan toCollection
  • Kita akan menggunakan interface WithMapping untuk mengisi kolom no yang dibuat menggunakan interface WithHeadings
  • 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.

--

--