Schneller Excel-Import/Export für Laravel dank Spout. Siehe Benchmarks unten.
Installation über Composer:
composer require rap2hpoutre/fast-excel
Exportieren Sie ein Modell in .xlsx
Datei:
use Rap2hpoutre FastExcel FastExcel ;
use App User ;
// Load users
$ users = User:: all ();
// Export all users
( new FastExcel ( $ users ))-> export ( ' file.xlsx ' );
Exportieren Sie ein Modell oder eine Sammlung :
$ list = collect ([
[ ' id ' => 1 , ' name ' => ' Jane ' ],
[ ' id ' => 2 , ' name ' => ' John ' ],
]);
( new FastExcel ( $ list ))-> export ( ' file.xlsx ' );
Exportieren Sie xlsx
, ods
und csv
:
$ invoices = App Invoice:: orderBy ( ' created_at ' , ' DESC ' )-> get ();
( new FastExcel ( $ invoices ))-> export ( ' invoices.csv ' );
Exportieren Sie nur einige Attribute, die Spaltennamen angeben:
( new FastExcel (User:: all ()))-> export ( ' users.csv ' , function ( $ user ) {
return [
' Email ' => $ user -> email ,
' First Name ' => $ user -> firstname ,
' Last Name ' => strtoupper ( $ user -> lastname ),
];
});
Download (von einer Controller-Methode):
return ( new FastExcel (User:: all ()))-> download ( ' file.xlsx ' );
import
gibt eine Sammlung zurück:
$ collection = ( new FastExcel )-> import ( ' file.xlsx ' );
Importieren Sie eine csv
mit bestimmten Trennzeichen, Einschlusszeichen und „gbk“-Kodierung:
$ collection = ( new FastExcel )-> configureCsv ( ' ; ' , ' # ' , ' gbk ' )-> import ( ' file.csv ' );
Importieren und in die Datenbank einfügen:
$ users = ( new FastExcel )-> import ( ' file.xlsx ' , function ( $ line ) {
return User:: create ([
' name ' => $ line [ ' Name ' ],
' email ' => $ line [ ' Email ' ]
]);
});
Sie können FastExcel mit der optionalen Fassade verwenden. Fügen Sie die folgende Zeile zu config/app.php
unter dem Schlüssel aliases
hinzu.
' FastExcel ' => Rap2hpoutre FastExcel Facades FastExcel::class,
Wenn Sie die Fassade verwenden, haben Sie keinen Zugriff auf den Konstruktor. Sie können Ihre Exportdaten mithilfe der data
festlegen.
$ list = collect ([
[ ' id ' => 1 , ' name ' => ' Jane ' ],
[ ' id ' => 2 , ' name ' => ' John ' ],
]);
FastExcel:: data ( $ list )-> export ( ' file.xlsx ' );
FastExcel bietet einen praktischen globalen Helfer, um die FastExcel-Klasse schnell an einer beliebigen Stelle in einer Laravel-Anwendung zu instanziieren.
$ collection = fastexcel ()-> import ( ' file.xlsx ' );
fastexcel ( $ collection )-> export ( ' file.xlsx ' );
Exportieren Sie mehrere Blätter, indem Sie eine SheetCollection
erstellen:
$ sheets = new SheetCollection ([
User:: all (),
Project:: all ()
]);
( new FastExcel ( $ sheets ))-> export ( ' file.xlsx ' );
Verwenden Sie den Index, um den Blattnamen anzugeben:
$ sheets = new SheetCollection ([
' Users ' => User:: all (),
' Second sheet ' => Project:: all ()
]);
Importieren Sie mehrere Blätter mit importSheets
:
$ sheets = ( new FastExcel )-> importSheets ( ' file.xlsx ' );
Sie können ein bestimmtes Blatt auch anhand seiner Nummer importieren:
$ users = ( new FastExcel )-> sheet ( 3 )-> import ( ' file.xlsx ' );
Mehrere Blätter mit Blattnamen importieren:
$ sheets = ( new FastExcel )-> withSheetsNames ()-> importSheets ( ' file.xlsx ' );
Exportieren Sie Zeilen einzeln, um Probleme memory_limit
zu vermeiden, indem Sie yield
verwenden:
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 ' );
Fügen Sie den Kopfzeilen- und Zeilenstil mit den Methoden headerStyle
und rowsStyle
hinzu.
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 soll Spout mit Laravel-Geschmack sein: eine einfache, aber elegante Hülle um Spout mit dem Ziel, Importe und Exporte zu vereinfachen. Es könnte als schnellere (und speicherfreundlichere) Alternative zu Laravel Excel mit weniger Funktionen angesehen werden. Verwenden Sie es nur für einfache Aufgaben.
Getestet auf einem MacBook Pro 2015 2,7 GHz Intel Core i5 16 Go 1867 MHz DDR3. Testen eines XLSX-Exports für 10.000 Zeilen, 20 Spalten mit Zufallsdaten, 10 Iterationen, 05.04.2018. Vertrauen Sie nicht auf Benchmarks.
Durchschnittliche Spitzenauslastung des Speichers | Ausführungszeit | |
---|---|---|
Laravel Excel | 123,56 Mio | 11,56 s |
FastExcel | 2,09 Mio | 2,76 s |
Denken Sie jedoch daran, dass Laravel Excel noch viele weitere Funktionen bietet.