Melanjutkan artikel sebelumnya (//soft-gain.com/2020/06/07/kirim-email-menggunakan-laravel-dan-smtp-gmail/), berikut ini adalah tutorial export excel menggunakan laravel. Untuk bisa export atau import data dalam bentuk excel dengan laravel, kita akan menggunakan library laravel-excel/maatwebsite (//github.com/Maatwebsite/Laravel-Excel).
Pertama-tama kita akan install terlebih dahulu library yang akan kita gunakan untuk meng-export data dari database ke dalam bentuk excel. Ketikan perintah berikut ini :
composer require "maatwebsite/excel:~2.1.0"NOTE : kita akan menggunakan versi 2.1, karena di latest version ada fungsi yang hendak kita pakai namun sudah tidak bisa di gunakan.
Selanjutnya kita tambahkan baris ini pada router kita :
Route::get('/transaksi/export', 'sg_transaksi@export');Selanjutnya kita akan menambahkan fungsi ini pada controller sg_transaksi.php :
public function export(){ $data = DB::table('sg_transaksi')->select('sg_barang.nama_barang','sg_transaksi.jenis_transaksi','sg_transaksi.jumlah_barang','a.name as created_by','b.name as updated_by','sg_transaksi.updated_at')->join('sg_barang','sg_barang.id','=','sg_transaksi.id_barang')->join('users as a','a.id','=','sg_transaksi.created_by')->leftJoin('users as b','b.id','=','sg_transaksi.updated_by')->get()->toArray(); $data_array[] = array('Nama Barang', 'Jenis Transaksi', 'Jumlah Transaksi', 'Dibuat Oleh', 'Terakhir Ubah', 'Tanggal'); foreach($data as $trx) { $data_array[] = array( 'Nama Barang' => $trx->nama_barang, 'Jenis Transaksi' => $trx->jenis_transaksi, 'Jumlah Transaksi' => $trx->jumlah_barang, 'Dibuat Oleh' => $trx->created_by, 'Terakhir Ubah' => $trx->updated_by, 'Tanggal' => date('d M Y',strtotime($trx->updated_at)) ); } Excel::create('export-to-excel', function($excel) use ($data_array) { $excel->setTitle('Transaksi Data'); $excel->sheet('Transaksi Data', function($sheet) use ($data_array){ $sheet->fromArray($data_array, null, 'A1', false, false); }); })->export('csv'); }Jangan lupa juga untuk menambahkan library yang sudah kita install tadi :
Secara sederhana, fungsi export hanya berisi query dari table transaksi yang hasilnya kita jadikan array lalu kita memanggil fungsi create dari library excel (maatwebsite/laravel-excel) yang mana hasilnya kita kembalikan ke client dalam bentuk file. Saya akan mencoba menjabarkannya satu persatu.
Pada bagian ini kita akan meng-query data pada table transaksi, barang dan user :
$data = DB::table('sg_transaksi')->select('sg_barang.nama_barang','sg_transaksi.jenis_transaksi','sg_transaksi.jumlah_barang','a.name as created_by','b.name as updated_by','sg_transaksi.updated_at')->join('sg_barang','sg_barang.id','=','sg_transaksi.id_barang')->join('users as a','a.id','=','sg_transaksi.created_by')->leftJoin('users as b','b.id','=','sg_transaksi.updated_by')->get()->toArray();Pada bagian ini kita memasukan array ke dalam variable data_array, array ini lah yang akan kita gunakan sebagai header dari data yang akan kita export :
Berikutnya kita masukan data hasil query kita sebelumnya ke dalam variable data_array :
foreach($data as $trx) { $data_array[] = array( 'Nama Barang' => $trx->nama_barang, 'Jenis Transaksi' => $trx->jenis_transaksi, 'Jumlah Transaksi' => $trx->jumlah_barang, 'Dibuat Oleh' => $trx->created_by, 'Terakhir Ubah' => $trx->updated_by, 'Tanggal' => date('d M Y',strtotime($trx->updated_at)) ); }Terakhir kita panggil fungsi dari library laravel-excel dan kita buat file nya dalam bentuk csv :
Excel::create('export-to-excel', function($excel) use ($data_array) { $excel->setTitle('Transaksi Data'); $excel->sheet('Transaksi Data', function($sheet) use ($data_array){ $sheet->fromArray($data_array, null, 'A1', false, false); }); })->export('csv');Lalu terakhir kita tambahkan code berikut ini pada file table.blade.php pada folder view transaksi :
<a class="btn btn-success" href="{{ url('transaksi/export') }}"> Export to Excel </a>Demikian lah tutorial export excel menggunakan laravel, seperti biasa full source nya bisa di ambil di repo saya (//github.com/ImmanuelJL/belajar-laravel), cabang aplikasi-stok-barang (//github.com/ImmanuelJL/belajar-laravel/tree/aplikasi-stok-barang). Terima kasih.