Impor/ekspor Excel cepat untuk Laravel, berkat Spout. Lihat tolok ukur di bawah.
Instal melalui komposer:
composer require rap2hpoutre/fast-excel
Ekspor Model ke file .xlsx
:
use Rap2hpoutre FastExcel FastExcel ;
use App User ;
// Load users
$ users = User:: all ();
// Export all users
( new FastExcel ( $ users ))-> export ( ' file.xlsx ' );
Ekspor Model atau Koleksi :
$ list = collect ([
[ ' id ' => 1 , ' name ' => ' Jane ' ],
[ ' id ' => 2 , ' name ' => ' John ' ],
]);
( new FastExcel ( $ list ))-> export ( ' file.xlsx ' );
Ekspor xlsx
, ods
dan csv
:
$ invoices = App Invoice:: orderBy ( ' created_at ' , ' DESC ' )-> get ();
( new FastExcel ( $ invoices ))-> export ( ' invoices.csv ' );
Ekspor hanya beberapa atribut yang menentukan nama kolom:
( new FastExcel (User:: all ()))-> export ( ' users.csv ' , function ( $ user ) {
return [
' Email ' => $ user -> email ,
' First Name ' => $ user -> firstname ,
' Last Name ' => strtoupper ( $ user -> lastname ),
];
});
Unduh (dari metode pengontrol):
return ( new FastExcel (User:: all ()))-> download ( ' file.xlsx ' );
import
mengembalikan Koleksi:
$ collection = ( new FastExcel )-> import ( ' file.xlsx ' );
Impor csv
dengan pembatas tertentu, karakter enklosur, dan pengkodean "gbk":
$ collection = ( new FastExcel )-> configureCsv ( ' ; ' , ' # ' , ' gbk ' )-> import ( ' file.csv ' );
Impor dan masukkan ke database:
$ users = ( new FastExcel )-> import ( ' file.xlsx ' , function ( $ line ) {
return User:: create ([
' name ' => $ line [ ' Name ' ],
' email ' => $ line [ ' Email ' ]
]);
});
Anda dapat menggunakan FastExcel dengan Facade opsional. Tambahkan baris berikut ke config/app.php
di bawah kunci aliases
.
' FastExcel ' => Rap2hpoutre FastExcel Facades FastExcel::class,
Dengan menggunakan Fasad, Anda tidak akan memiliki akses ke konstruktor. Anda dapat mengatur data ekspor menggunakan metode data
.
$ list = collect ([
[ ' id ' => 1 , ' name ' => ' Jane ' ],
[ ' id ' => 2 , ' name ' => ' John ' ],
]);
FastExcel:: data ( $ list )-> export ( ' file.xlsx ' );
FastExcel menyediakan bantuan global yang nyaman untuk membuat instance kelas FastExcel dengan cepat di mana saja dalam aplikasi Laravel.
$ collection = fastexcel ()-> import ( ' file.xlsx ' );
fastexcel ( $ collection )-> export ( ' file.xlsx ' );
Ekspor beberapa lembar dengan membuat SheetCollection
:
$ sheets = new SheetCollection ([
User:: all (),
Project:: all ()
]);
( new FastExcel ( $ sheets ))-> export ( ' file.xlsx ' );
Gunakan indeks untuk menentukan nama sheet:
$ sheets = new SheetCollection ([
' Users ' => User:: all (),
' Second sheet ' => Project:: all ()
]);
Impor beberapa lembar dengan menggunakan importSheets
:
$ sheets = ( new FastExcel )-> importSheets ( ' file.xlsx ' );
Anda juga dapat mengimpor sheet tertentu berdasarkan nomornya:
$ users = ( new FastExcel )-> sheet ( 3 )-> import ( ' file.xlsx ' );
Impor beberapa lembar dengan nama lembar:
$ sheets = ( new FastExcel )-> withSheetsNames ()-> importSheets ( ' file.xlsx ' );
Ekspor baris satu per satu untuk menghindari masalah memory_limit
menggunakan yield
:
function usersGenerator () {
foreach (User:: cursor () as $ user ) {
yield $ user ;
}
}
// Export consumes only a few MB, even with 10M+ rows.
( new FastExcel ( usersGenerator ()))-> export ( ' test.xlsx ' );
Tambahkan gaya header dan baris dengan metode headerStyle
dan rowsStyle
.
use OpenSpout Common Entity Style Style ;
$ header_style = ( new Style ())-> setFontBold ();
$ rows_style = ( new Style ())
-> setFontSize ( 15 )
-> setShouldWrapText ()
-> setBackgroundColor ( " EDEDED " );
return ( new FastExcel ( $ list ))
-> headerStyle ( $ header_style )
-> rowsStyle ( $ rows_style )
-> download ( ' file.xlsx ' );
FastExcel dimaksudkan untuk menjadi Spout rasa Laravel: pembungkus Spout yang sederhana namun elegan dengan tujuan menyederhanakan impor dan ekspor . Ini bisa dianggap sebagai alternatif yang lebih cepat (dan ramah memori) dibandingkan Laravel Excel, dengan fitur yang lebih sedikit. Gunakan hanya untuk tugas-tugas sederhana.
Diuji pada MacBook Pro 2015 2,7 GHz Intel Core i5 16 Go 1867 MHz DDR3. Menguji ekspor XLSX untuk 10.000 baris, 20 kolom dengan data acak, 10 iterasi, 05-04-2018. Jangan percaya tolok ukur.
Penggunaan puncak memori rata-rata | Waktu pelaksanaan | |
---|---|---|
Laravel Excel | 123,56 M | 11,56 detik |
CepatUnggul | 2,09 M | 2,76 detik |
Namun perlu diingat bahwa Laravel Excel memiliki lebih banyak fitur.