Join our newsletter!

Enter your email to receive our latest newsletter.

Don't worry, we don't spam

maatwebsite/excel# excel# laravel# vendor# composer

4 tahun yang lalu

Export Collection ke format excel

Jika aplikasi anda mempunyai data collection yang banyak, kadang kala dibutuhkan untuk bisa diexport ke format excel. Untuk itu dibutuh kan package. package ini sebagai alternatif jika anda sudah menggunakan datatables, akan tetapi output dari file nya kurang bisa di sesuaikan dengan kebutuhan. Oleh karena itu kali ini, kita akan menggunakan package excel.
a. Silahkan install package melalui composer
composer require maatwebsite/excel
atau silahkan buka link berikut untuk panduan instalasi nya : https://laravel-excel.com/
b. Tambahkan sebuah file php yang akan digunakan untuk memanggil fungsi export excel

namespace App\Exports;

use Illuminate\Http\Request;
use App\Models\Invoice;
use Carbon\Carbon;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;

class ExportDataOrder implements FromQuery, WithHeadings
{
    use Exportable;

    public function __construct(Request $request)
    {
        $this->request = $request;
    }

    public function query()
    {
        return $this->exportDefault($this->request);
    }

    public function headings(): array
    {
        return [
            "NAMA PRODUK","VARIAN PRODUK", "SATUAN", "KD ORDER",  "NAMA TOKO",
            "KOTA",  "STATUS", "QUANTITY",
            "CATATAN", "DATE ORDER" 
        ];
    }


public function exportDefault(Request $request) {
    
     $exportData = Order::with('product')->Orderby('id','desc')->get();
        return $exportData;
    }
}

class diatas berfungsi untuk memangil collection dari Order dengan mengambil relasi master produk, dengan sort order by id order. untuk header pada hasil export bisa di custom pada function heading
c. Tambahkan controller yg akan digunakan untuk mengatur export excel tersebut (contoh ExportCSVController.php)


use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Product;
use Maatwebsite\Excel\Facades\Excel;
use App\Exports\ExportDataOrder;
use Carbon\Carbon; 
use DB;
use Illuminate\Support\Facades\Session;

class ExportCSVController extends Controller
{
����public function exportXLS (Request $request){

        date_default_timezone_set("Asia/Jakarta");
        $d = strtotime("now");
        $time = date("d-m-Y H:i:s", $d);
        $filename = $time."_LOGS_ORDER.xlsx";
        return Excel::download(new ExportDataOrder($request), $filename);

    }
}
untuk nama hasil export saya gunakan waktu export dilakukan, sehingga akan memudahkan tracking kapan file tersebut dilakukan
d. Tambahkan routing pada file route web.php
Route::any('/exportxls', 'ExportCSVController@exportXLS')->name('order.export');

e. SIlahkan running laravel anda dengan php artisan serve, kemudian buka route yang sudah anda buat sebelumnya "/exportxls"
Wassalam, 
selamat mencoba