Importación/exportación rápida de Excel para Laravel, gracias a Spout. Vea los puntos de referencia a continuación.
Instalar a través del compositor:
composer require rap2hpoutre/fast-excel
Exportar un modelo a un archivo .xlsx
:
use Rap2hpoutre FastExcel FastExcel ;
use App User ;
// Load users
$ users = User:: all ();
// Export all users
( new FastExcel ( $ users ))-> export ( ' file.xlsx ' );
Exportar un modelo o una colección :
$ list = collect ([
[ ' id ' => 1 , ' name ' => ' Jane ' ],
[ ' id ' => 2 , ' name ' => ' John ' ],
]);
( new FastExcel ( $ list ))-> export ( ' file.xlsx ' );
Exportar xlsx
, ods
y csv
:
$ invoices = App Invoice:: orderBy ( ' created_at ' , ' DESC ' )-> get ();
( new FastExcel ( $ invoices ))-> export ( ' invoices.csv ' );
Exporte solo algunos atributos que especifiquen nombres de columnas:
( new FastExcel (User:: all ()))-> export ( ' users.csv ' , function ( $ user ) {
return [
' Email ' => $ user -> email ,
' First Name ' => $ user -> firstname ,
' Last Name ' => strtoupper ( $ user -> lastname ),
];
});
Descargar (desde un método de controlador):
return ( new FastExcel (User:: all ()))-> download ( ' file.xlsx ' );
import
devuelve una colección:
$ collection = ( new FastExcel )-> import ( ' file.xlsx ' );
Importe un csv
con un delimitador específico, caracteres adjuntos y codificación "gbk":
$ collection = ( new FastExcel )-> configureCsv ( ' ; ' , ' # ' , ' gbk ' )-> import ( ' file.csv ' );
Importar e insertar en la base de datos:
$ users = ( new FastExcel )-> import ( ' file.xlsx ' , function ( $ line ) {
return User:: create ([
' name ' => $ line [ ' Name ' ],
' email ' => $ line [ ' Email ' ]
]);
});
Puede utilizar FastExcel con Facade opcional. Agregue la siguiente línea a config/app.php
bajo la clave aliases
.
' FastExcel ' => Rap2hpoutre FastExcel Facades FastExcel::class,
Usando Fachada, no tendrás acceso al constructor. Puede configurar sus datos de exportación utilizando el método data
.
$ list = collect ([
[ ' id ' => 1 , ' name ' => ' Jane ' ],
[ ' id ' => 2 , ' name ' => ' John ' ],
]);
FastExcel:: data ( $ list )-> export ( ' file.xlsx ' );
FastExcel proporciona una ayuda global conveniente para crear rápidamente una instancia de la clase FastExcel en cualquier lugar de una aplicación Laravel.
$ collection = fastexcel ()-> import ( ' file.xlsx ' );
fastexcel ( $ collection )-> export ( ' file.xlsx ' );
Exporte varias hojas creando una SheetCollection
:
$ sheets = new SheetCollection ([
User:: all (),
Project:: all ()
]);
( new FastExcel ( $ sheets ))-> export ( ' file.xlsx ' );
Utilice el índice para especificar el nombre de la hoja:
$ sheets = new SheetCollection ([
' Users ' => User:: all (),
' Second sheet ' => Project:: all ()
]);
Importe varias hojas utilizando importSheets
:
$ sheets = ( new FastExcel )-> importSheets ( ' file.xlsx ' );
También puedes importar una hoja específica por su número:
$ users = ( new FastExcel )-> sheet ( 3 )-> import ( ' file.xlsx ' );
Importe varias hojas con nombres de hojas:
$ sheets = ( new FastExcel )-> withSheetsNames ()-> importSheets ( ' file.xlsx ' );
Exporte filas una por una para evitar problemas memory_limit
usando 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 ' );
Agregue estilo de encabezado y filas con los métodos headerStyle
y 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 pretende ser Spout con sabor a Laravel: un envoltorio simple pero elegante alrededor de Spout con el objetivo de simplificar las importaciones y exportaciones . Podría considerarse como una alternativa más rápida (y amigable con la memoria) a Laravel Excel, con menos funciones. Úselo sólo para tareas simples.
Probado en un MacBook Pro 2015 2,7 GHz Intel Core i5 16 Go 1867 MHz DDR3. Probando una exportación XLSX para 10000 líneas, 20 columnas con datos aleatorios, 10 iteraciones, 2018-04-05. No confíes en los puntos de referencia.
Uso máximo promedio de memoria | tiempo de ejecución | |
---|---|---|
Excel Laravel | 123,56 millones | 11,56 segundos |
Excel rápido | 2,09 millones | 2,76 segundos |
Aún así, recuerda que Laravel Excel tiene muchas más funciones.