Tentu, ini artikel yang Anda minta:
Mengekspor data ke format Excel adalah fitur umum yang sangat dibutuhkan dalam aplikasi bisnis, memungkinkan pengguna untuk menganalisis, mengarsipkan, atau membagikan data dengan lebih mudah. Laravel, seperti halnya fitur PDF, tidak memiliki kemampuan ekspor Excel bawaan, tetapi dengan bantuan package pihak ketiga yang sangat populer, Laravel Excel (Maatwebsite/Laravel-Excel), tugas ini menjadi sangat sederhana.
Dalam tutorial Laravel ke-38 ini, kita akan membahas cara menginstal dan menggunakan Laravel Excel untuk mengekspor data dari database Anda ke file Excel (.xlsx atau .csv) di aplikasi Laravel.
1. Menginstal Laravel Excel
Langkah pertama adalah menginstal paket maatwebsite/excel melalui Composer.
Buka terminal Anda dan jalankan perintah berikut:
composer require maatwebsite/excel
Setelah instalasi selesai, Laravel Excel akan secara otomatis ditemukan oleh Laravel berkat package discovery.
2. Membuat Kelas Export
Laravel Excel menggunakan konsep “Export Class” untuk mendefinisikan data apa yang akan diekspor dan bagaimana formatnya.
Gunakan perintah Artisan untuk membuat kelas export baru:
php artisan make:export UsersExport --model=User
Perintah ini akan membuat file app/Exports/UsersExport.php dan secara otomatis mengaitkannya dengan model User.
Memodifikasi Kelas Export
Buka file app/Exports/UsersExport.php dan modifikasi seperti contoh berikut:
<?php
namespace App\Exports;
use App\Models\User; // Pastikan Anda mengimpor model User
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings; // Untuk menambahkan header kolom
class UsersExport implements FromCollection, WithHeadings
{
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
// Mengambil semua data user dari database
return User::all();
}
/**
* Menambahkan baris header di file Excel.
*
* @return array
*/
public function headings(): array
{
return [
'ID',
'Nama',
'Email',
'Email Verified At',
'Password', // Sebaiknya tidak mengekspor password dalam produksi
'Created At',
'Updated At',
];
}
}
Dalam contoh ini:
FromCollection: Interface ini mengharuskan kita mengimplementasikan metodecollection()yang akan mengembalikan collection data yang akan diekspor. Dalam kasus ini, kita mengembalikan semua data dari modelUser.WithHeadings: Interface ini memungkinkan kita untuk menambahkan baris judul (header) pada file Excel menggunakan metodeheadings(). Ini sangat membantu agar file Excel mudah dibaca.
Penting: Dalam produksi, hindari mengekspor data sensitif seperti password, meskipun sudah di-hash. Filter kolom yang tidak perlu.
3. Membuat Controller dan Route
Sekarang, kita akan membuat sebuah controller yang akan memicu proses ekspor.
Gunakan perintah Artisan untuk membuat controller baru:
php artisan make:controller UserController
Kemudian, modifikasi app/Http/Controllers/UserController.php seperti di bawah ini:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Exports\UsersExport; // Impor kelas export yang telah kita buat
use Maatwebsite\Excel\Facades\Excel; // Impor facade Excel
class UserController extends Controller
{
public function export()
{
return Excel::download(new UsersExport, 'users.xlsx');
}
}
Terakhir, definisikan rute di routes/web.php untuk memicu fungsi ini:
use App\Http\Controllers\UserController;
Route::get('/users/export', [UserController::class, 'export'])->name('users.export');
4. Menggunakan Fitur Export
Sekarang, jika Anda mengakses URL /users/export di browser Anda, Laravel akan menjalankan controller UserController, membuat instance UsersExport, dan memicu unduhan file Excel bernama users.xlsx yang berisi semua data pengguna dari database Anda.
Mengekspor ke CSV
Jika Anda ingin mengekspor ke format CSV, Anda cukup mengubah ekstensi file di metode download():
public function export()
{
return Excel::download(new UsersExport, 'users.csv');
}
Filtering Data untuk Export
Seringkali, Anda tidak ingin mengekspor semua data. Anda bisa menambahkan logika filtering di metode collection() pada UsersExport Anda.
Contoh: Mengekspor hanya user yang terdaftar setelah tanggal tertentu.
// app/Exports/UsersExport.php
use Carbon\Carbon;
public function collection()
{
return User::where('created_at', '>=', Carbon::parse('2023-01-01'))->get();
}
Atau, Anda bisa melewatkan parameter ke constructor UsersExport:
// app/Exports/UsersExport.php
private $year;
public function __construct(int $year)
{
$this->year = $year;
}
public function collection()
{
return User::whereYear('created_at', $this->year)->get();
}
Dan di controller:
// app/Http/Controllers/UserController.php
public function exportByYear(Request $request, int $year)
{
return Excel::download(new UsersExport($year), 'users_' . $year . '.xlsx');
}
Kesimpulan
Laravel Excel adalah solusi yang sangat ampuh dan fleksibel untuk kebutuhan ekspor data di aplikasi Laravel Anda. Dengan sintaks yang bersih dan fitur yang kaya, Anda dapat dengan mudah menghasilkan file Excel atau CSV yang kompleks, menghemat waktu pengembangan, dan memberikan fungsionalitas yang berharga bagi pengguna Anda, baik mereka berada di Malang, Jawa Timur, atau di mana pun.