Setelah sebelumnya saya membahas membuat file pdf dari HTML di laravel. Kali ini ada tutorial melakukan export atau import pada file excel. Sebenarnya ada beberapa package di laravel untuk melakukan fitur ini, salah satu yang populer adalah laravel excel. Lalu pada tutorial ini menggunakan Laravel Fast Excel. Kenapa ada kata “fast”, karena dibandingkan laravel excel, hasilnya benchmarknya laravel fast excel lebih cepat.
Walau lebih cepat, namun fitur yang dimiliki laravel fast excel tidak selengkap laravel excel. Tapi untuk fitur sederhana laravel fast excel sudah sangat cukup
Instalasi
instal melalui composer
1 | composer require rap2hpoutre/fast-excel |
Lalu kita siap melakukan export atau import
Export
Export dari model atau collection:
1 2 3 4 5 6 | $list = collect([ [ 'id' => 1, 'name' => 'Jane' ], [ 'id' => 2, 'name' => 'John' ], ]); (new FastExcel($list))->export('file.xlsx'); |
Export ke xlsx, ods dan csv:
1 2 | $invoices = App\Invoice::orderBy('created_at', 'DESC')->get(); (new FastExcel($invoices))->export('invoices.csv'); |
Export hanya pada atribut tertentu dengan mendefinisikan nama kolom :
1 2 3 4 5 6 7 | (new FastExcel(User::all()))->export('users.csv', function ($user) { return [ 'Email' => $user->email, 'First Name' => $user->firstname, 'Last Name' => strtoupper($user->lastname), ]; }); |
Import
Import ke collection
1 | $collection = (new FastExcel)->import('file.xlsx'); |
Import dari csv dengan mendefinisikan delimiter dan enclosure
1 | $collection = (new FastExcel)->configureCsv(';', '#')->import('file.csv'); |
Import lalu masukkan ke database
1 2 3 4 5 6 | $users = (new FastExcel)->import('file.xlsx', function ($line) { return User::create([ 'name' => $line['Name'], 'email' => $line['Email'] ]); }); |
untuk lebih jelas bisa langsung ke https://github.com/rap2hpoutre/fast-excel