
Pendahuluan
Bayangin lagi ngerjain fitur sederhana, tapi klien tiba-tiba minta tombol 'Download Laporan' yang harus bisa buka di Excel tanpa berantakan formatnya. Awalnya saya coba pakai native CSV, tapi begitu datanya ribuan baris, kolom jadi kacau pas dibuka di aplikasi spreadsheet. Di sinilah library Laravel Excel jadi penyelamat yang sering saya andalkan tiap kali fitur export jadi menu wajib di dashboard admin.
Tips & Best Practices
Di banyak project, biasanya saya mulai dari menaruh logic export di class Export terpisah supaya controller tetap bersih. Pastikan teman-teman selalu menggunakan LazyCollection saat berurusan dengan ribuan data supaya memori PHP nggak langsung jebol. Jangan lupa, selalu validasi input user sebelum menjalankan proses generate agar server nggak dipaksa kerja keras buat data yang sebenarnya nggak perlu.
Contoh Kode
Untuk memulai, kita bisa buat class export lewat Artisan. Saya biasanya pakai class FromCollection supaya lebih cepat, contohnya seperti ini:
// App\Exports\UsersExport.php
namespace App\Exports;
use App\Models\User;
use Maatwebsite\Excel\Concerns\FromCollection;
class UsersExport implements FromCollection {
public function collection() {
return User::all(); // Pakai chunking kalau data besar!
}
}Lalu di controller, tinggal panggil saja: return Excel::download(new UsersExport, 'users.xlsx');
Variasi Implementasi
Kadang kita butuh format yang beda-beda. Kalau cuma butuh performa kencang buat data jutaan baris, pakai format CSV itu pilihan terbaik karena lightweight. Tapi kalau klien minta styling warna, font, atau header yang cantik, mau nggak mau kita harus pakai format XLSX lewat PhpSpreadsheet yang dibungkus Laravel Excel. Bedanya, CSV jauh lebih hemat RAM dibanding XLSX yang butuh proses rendering object yang kompleks.
Kesalahan Umum
- Lupa pakai chunking, akhirnya kena memory exhausted saat export ribuan user.
- Tidak mendefinisikan headings, hasil export jadi cuma angka tanpa judul kolom yang jelas.
- Semua data langsung di-query di model tanpa filter, padahal user cuma butuh laporan per bulan.
- Menaruh semua logic di Controller, bikin file controller jadi ribuan baris yang susah dimaintain.
- Lupa hapus file temporary di folder storage kalau pakai proses queue, akhirnya disk penuh sendiri.
Ringkasan
Intinya, export data itu bukan sekadar pindahin database ke file, tapi soal kenyamanan user pas buka file-nya. Dengan Laravel Excel, kita dapet kemudahan itu tanpa harus pusing sama format header atau tipe file. Tips terakhir dari saya: selalu test export data dummy dengan jumlah banyak sebelum deploy, biar pas hari H nggak kaget kalau sistem terasa berat.
Komentar
Posting Komentar