استيراد/تصدير سريع لبرنامج 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 مع الواجهة الاختيارية. أضف السطر التالي إلى config/app.php
ضمن مفتاح aliases
.
' FastExcel ' => Rap2hpoutre FastExcel Facades FastExcel::class,
باستخدام الواجهة، لن تتمكن من الوصول إلى المنشئ. يمكنك ضبط بيانات التصدير الخاصة بك باستخدام طريقة 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 جيجا هرتز Intel Core i5 16 Go وسرعة 1867 ميجا هرتز DDR3. اختبار تصدير XLSX لـ 10000 سطر، 20 عمودًا ببيانات عشوائية، 10 تكرارات، 2018-04-05. لا تثق بالمعايير.
متوسط استخدام ذروة الذاكرة | وقت التنفيذ | |
---|---|---|
لارافيل اكسل | 123.56 م | 11.56 ثانية |
FastExcel | 2.09 م | 2.76 ثانية |
ومع ذلك، تذكر أن Laravel Excel يحتوي على العديد من الميزات.