Berikut adalah tutorial langkah demi langkah untuk export data dari MySQL ke Excel di Laravel 10.  Untuk melakukan ini, kita akan menggunakan package populer Laravel Excel (maatwebsite/excel). Package ini sangat membantu dalam memproses data import dan export dengan mudah.

Sebelum tutorial ini kita lanjutkan, ada baiknya membaca Post sebelumnya terkait Import Excel ke database mySQL di laravel 10 karena kita akan menggunakan database yang telah dibuat sebelumnya untuk melakukan export data. 

1. Install Laravel Excel Package

Pertama, instal package Laravel Excel dengan menggunakan Composer:

composer require maatwebsite/excel

Jika sudah install package ini sebelumnya, abaikan step ini. 

2. Buat Model dan Controller

Kita anggap Anda sudah memiliki database yang sebelumnya diimpor dari Excel, contohnya dengan tabel products yang memiliki data seperti name, description, price, dan sebagainya seperti pada tabel import.

Jika belum memiliki model dan controller, buat model dan controller menggunakan perintah:

php artisan make:model Product -m
php artisan make:controller ProductExportController

3. Buat Export Class

Laravel Excel bekerja dengan menggunakan Export Class untuk memudahkan ekspor data. Buat class export menggunakan command berikut:

php artisan make:export ProductsExport --model=Product

Class ini akan terletak di app/Exports/ProductsExport.php.

Buka file ProductsExport.php dan modifikasi seperti ini:

<?php

namespace App\Exports;

use App\Models\Product;
use Maatwebsite\Excel\Concerns\FromCollection;

class ProductsExport implements FromCollection
{
    /**
    * @return \Illuminate\Support\Collection
    */
    public function collection()
    {
        return Product::all();
    }
    public function headings(): array
    {
        return [
            'Name',
            'Description',
            'Price',
            'Created At',
            'Updated At',
        ];
    }
}
  • FromCollection: Mengindikasikan bahwa data yang akan diekspor berasal dari collection, seperti data dari model Post.
  • WithHeadings: Untuk menambahkan baris heading di atas tabel Excel.

4. Buat Route untuk Export

Selanjutnya, buat route untuk mengekspor data ke Excel. Tambahkan route di routes/web.php:

use App\Http\Controllers\ProductExportController;

Route::get('export', [ProductExportController::class, 'export'])->name('posts.export');

5. Tambahkan Logika Export di Controller

Sekarang, tambahkan method export di ProductExportController.php untuk mengeksekusi proses ekspor data:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Exports\ProductsExport;
use Maatwebsite\Excel\Facades\Excel;

class ProductExportController extends Controller
{
    public function export()
    {
        // Nama file yang akan diekspor
        $fileName = 'posts_' . date('Y_m_d_His') . '.xlsx';

        // Mengekspor data menggunakan Laravel Excel
        return Excel::download(new ProductsExport, $fileName);
    }
}

6. Tes Ekspor Data

Jalankan aplikasi Anda dan akses route untuk mengekspor data. Misalnya, jika Anda menjalankan Laravel di localhost:8000, Anda bisa mengakses URL:

http://localhost:8000/export

Maka akan menghasilkan result sebagai berikut:

Kesimpulan

Sekarang Anda sudah dapat mengekspor data dari MySQL ke file Excel di Laravel 10. Dengan mengikuti tutorial ini, data dari database Anda dapat diunduh dalam bentuk file Excel yang terformat rapi.