นำเข้า/ส่งออก Excel อย่างรวดเร็วสำหรับ Laravel ด้วย Spout ดูเกณฑ์มาตรฐานด้านล่าง
ติดตั้งผ่านผู้แต่ง:
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 ' );
นำเข้าไฟล์ csv
ที่มีตัวคั่น อักขระที่แนบมา และการเข้ารหัส "gbk" โดยเฉพาะ:
$ 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 ' ]
]);
});
คุณสามารถใช้ FastExcel กับ Facade เสริมได้ เพิ่มบรรทัดต่อไปนี้เพื่อ 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 เป็นตัวช่วยระดับโลกที่สะดวกสบายในการสร้างอินสแตนซ์คลาส FastExcel อย่างรวดเร็วทุกที่ในแอปพลิเคชัน Laravel
$ 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 ' );
ส่งออกทีละแถวเพื่อหลีกเลี่ยงปัญหา memory_limit
โดยใช้ 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 ' );
เพิ่มสไตล์ส่วนหัวและแถวด้วยเมธอด 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 มีวัตถุประสงค์เพื่อเป็น Spout ที่มีรสชาติของ Laravel: กระดาษห่อหุ้มรอบ Spout ที่เรียบง่าย แต่สวยงาม โดยมีเป้าหมายเพื่อทำให้ การนำเข้าและส่งออก ง่ายขึ้น อาจถือได้ว่าเป็นทางเลือกที่เร็วกว่า (และเป็นมิตรกับหน่วยความจำ) สำหรับ Laravel Excel โดยมีคุณสมบัติน้อยกว่า ใช้สำหรับงานง่ายๆเท่านั้น
ทดสอบกับ MacBook Pro 2015 2.7 GHz Intel Core i5 16 Go 1867 MHz DDR3 ทดสอบการส่งออก XLSX สำหรับ 10,000 บรรทัด 20 คอลัมน์พร้อมข้อมูลสุ่ม 10 รอบ 05-04-2561 อย่าเชื่อถือเกณฑ์มาตรฐาน
การใช้งานหน่วยความจำสูงสุดโดยเฉลี่ย | เวลาดำเนินการ | |
---|---|---|
ลาราเวล เอ็กเซล | 123.56 ม | 11.56 น |
รวดเร็วExcel | 2.09 ม | 2.76 วิ |
อย่างไรก็ตาม โปรดจำไว้ว่า Laravel Excel มีคุณสมบัติอีกมากมาย