Spout 덕분에 Laravel을 위한 빠른 Excel 가져오기/내보내기가 가능합니다. 아래 벤치마크를 참조하세요.
작곡가를 통해 설치:
composer require rap2hpoutre/fast-excel
모델을 .xlsx
파일로 내보내기:
use Rap2hpoutre FastExcel FastExcel ;
use App User ;
// Load users
$ users = User:: all ();
// Export all users
( new FastExcel ( $ users ))-> export ( ' file.xlsx ' );
모델 또는 컬렉션 내보내기:
$ list = collect ([
[ ' id ' => 1 , ' name ' => ' Jane ' ],
[ ' id ' => 2 , ' name ' => ' John ' ],
]);
( new FastExcel ( $ list ))-> export ( ' file.xlsx ' );
xlsx
, ods
및 csv
내보내기:
$ invoices = App Invoice:: orderBy ( ' created_at ' , ' DESC ' )-> get ();
( new FastExcel ( $ invoices ))-> export ( ' invoices.csv ' );
열 이름을 지정하는 일부 속성만 내보내기:
( new FastExcel (User:: all ()))-> export ( ' users.csv ' , function ( $ user ) {
return [
' Email ' => $ user -> email ,
' First Name ' => $ user -> firstname ,
' Last Name ' => strtoupper ( $ user -> lastname ),
];
});
다운로드(컨트롤러 메소드에서):
return ( new FastExcel (User:: all ()))-> download ( ' file.xlsx ' );
import
컬렉션을 반환합니다.
$ collection = ( new FastExcel )-> import ( ' file.xlsx ' );
특정 구분 기호, 엔클로저 문자 및 "gbk" 인코딩을 사용하여 csv
가져옵니다.
$ collection = ( new FastExcel )-> configureCsv ( ' ; ' , ' # ' , ' gbk ' )-> import ( ' file.csv ' );
데이터베이스로 가져오기 및 삽입:
$ users = ( new FastExcel )-> import ( ' file.xlsx ' , function ( $ line ) {
return User:: create ([
' name ' => $ line [ ' Name ' ],
' email ' => $ line [ ' Email ' ]
]);
});
선택적 Facade와 함께 FastExcel을 사용할 수 있습니다. config/app.php
의 aliases
키 아래에 다음 줄을 추가합니다.
' FastExcel ' => Rap2hpoutre FastExcel Facades FastExcel::class,
Facade를 사용하면 생성자에 액세스할 수 없습니다. data
메소드를 사용하여 내보내기 데이터를 설정할 수 있습니다.
$ list = collect ([
[ ' id ' => 1 , ' name ' => ' Jane ' ],
[ ' id ' => 2 , ' name ' => ' John ' ],
]);
FastExcel:: data ( $ list )-> export ( ' file.xlsx ' );
FastExcel은 Laravel 애플리케이션의 어느 곳에서나 FastExcel 클래스를 빠르게 인스턴스화할 수 있는 편리한 전역 도우미를 제공합니다.
$ collection = fastexcel ()-> import ( ' file.xlsx ' );
fastexcel ( $ collection )-> export ( ' file.xlsx ' );
SheetCollection
생성하여 여러 시트 내보내기:
$ sheets = new SheetCollection ([
User:: all (),
Project:: all ()
]);
( new FastExcel ( $ sheets ))-> export ( ' file.xlsx ' );
색인을 사용하여 시트 이름을 지정합니다.
$ sheets = new SheetCollection ([
' Users ' => User:: all (),
' Second sheet ' => Project:: all ()
]);
importSheets
사용하여 여러 시트 가져오기:
$ sheets = ( new FastExcel )-> importSheets ( ' file.xlsx ' );
번호별로 특정 시트를 가져올 수도 있습니다.
$ users = ( new FastExcel )-> sheet ( 3 )-> import ( ' file.xlsx ' );
시트 이름이 있는 여러 시트 가져오기:
$ sheets = ( new FastExcel )-> withSheetsNames ()-> importSheets ( ' file.xlsx ' );
yield
사용하여 memory_limit
문제를 방지하려면 행을 하나씩 내보내세요.
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 ' );
headerStyle
및 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은 Laravel 스타일의 Spout를 목표로 하고 있습니다. 즉, 가져오기 및 내보내기를 단순화하는 것을 목표로 하는 단순하지만 우아한 Spout 래퍼입니다. Laravel Excel에 비해 더 적은 기능을 갖춘 더 빠르고 메모리 친화적인 대안으로 간주될 수 있습니다. 간단한 작업에만 사용하세요.
MacBook Pro 2015 2,7 GHz Intel Core i5 16 Go 1867 MHz DDR3에서 테스트되었습니다. 2018-04-05, 10000줄, 임의 데이터가 포함된 20열, 10회 반복에 대한 XLSX 내보내기 테스트. 벤치마크를 믿지 마세요.
평균 메모리 최대 사용량 | 실행 시간 | |
---|---|---|
라라벨 엑셀 | 123.56M | 11.56초 |
빠른엑셀 | 209만 | 2.76초 |
하지만 Laravel Excel에는 더 많은 기능이 있다는 것을 기억하세요.