ชุดนี้รวมแอป Symfony 4/5/6/7 ของคุณเข้ากับไลบรารีเพิ่มประสิทธิภาพการทำงานของ PHPOffice PhpSpreadsheet
บันเดิลนี้ต้องการ นอกเหนือจากข้อกำหนดเบื้องต้นของไลบรารี PHPOffice แต่ละไลบรารี:
* PHP 7.2 or higher
* Symfony 4 or higher
หมายเหตุ: แท็กที่เก่ากว่า v1.0.0 (เช่น v0.2.0) ไม่ได้รับการสนับสนุนอีกต่อไปเนื่องจากสถานะเลิกใช้แล้วสำหรับทั้ง PHP <= 7.1 และ Symfony <= 4.4
ใช้ผู้แต่งเพื่อต้องการเวอร์ชันเสถียรล่าสุด
composer require yectep/phpspreadsheet-bundle
หากคุณไม่ได้ใช้ Flex ให้เปิดใช้งานบันเดิลในไฟล์ AppKernel.php
หรือ bundles.php
$ bundles = array (
[...]
new Yectep PhpSpreadsheetBundle PhpSpreadsheetBundle (),
);
บันเดิลนี้เปิดใช้งานบริการ phpoffice.spreadsheet
ดูเพิ่มเติมที่เอกสาร PHPOffice PhpSpreadsheet อย่างเป็นทางการ
สร้างออบเจ็กต์ PhpOfficePhpSpreadsheetSpreadsheet
ว่างเปล่า หรือหากส่ง $filename
ที่เป็นตัวเลือก จะสร้างอินสแตนซ์ PhpOfficePhpSpreadsheetIOFactory
เพื่อตรวจหาและใช้คลาส IWriter
ที่เหมาะสมในการอ่านไฟล์โดยอัตโนมัติ
// In your controller
$ newSpreadsheet = $ this -> get ( ' phpoffice.spreadsheet ' )-> createSpreadsheet ();
$ existingXlsx = $ this -> get ( ' phpoffice.spreadsheet ' )-> createSpreadsheet ( ' /path/to/file.xlsx ' );
string
$type) ส่งกลับอินสแตนซ์ของคลาส PhpOfficePhpSpreadsheetReader
ของ $type
ที่กำหนด
ประเภทจะคำนึงถึงขนาดตัวพิมพ์ ประเภทที่รองรับคือ:
Xlsx
: Excel 2007Xls
: Excel 5/BIFF (95)Xml
: Excel 2003 XMLSlk
: ลิงก์สัญลักษณ์ (SYLK)Ods
: Open/Libre Office (ODS)Csv
: CSVHtml
: HTML $ readerXlsx = $ this -> get ( ' phpoffice.spreadsheet ' )-> createReader ( ' Xlsx ' );
$ spreadsheet = $ readerXlsx -> load ( ' /path/to/file.xlsx ' );
Spreadsheet
$สเปรดชีต, string
$type) กำหนดวัตถุ PhpOfficePhpSpreadsheetSpreadsheet
และตัวเขียน $type
ส่งคืนอินสแตนซ์ของคลาส PhpOfficePhpSpreadsheetWriter
สำหรับประเภทนั้น
นอกจากประเภทการอ่านข้างต้นแล้ว ประเภทเหล่านี้ยังได้รับการสนับสนุนเพิ่มเติมสำหรับการเขียน หากมีการติดตั้งไลบรารี PHP ที่เหมาะสม
Tcpdf
Mpdf
Dompdf
$ spreadsheet = $ this -> get ( ' phpoffice.spreadsheet ' )-> createSpreadsheet ();
$ spreadsheet -> getActiveSheet ()-> setCellValue ( ' A1 ' , ' Hello world ' );
$ writerXlsx = $ this -> get ( ' phpoffice.spreadsheet ' )-> createWriter ( $ spreadsheet , ' Xlsx ' );
$ writerXlsx -> save ( ' /path/to/destination.xlsx ' );
ผลงานมีมากกว่าการต้อนรับ แยกโครงการ และส่ง PR เมื่อคุณเสร็จสิ้น
สิ่งที่ต้องทำที่เหลืออยู่ ได้แก่ :
หากคุณกำลังย้ายจากส่วนประกอบ Symfony Serializer + ตัวเข้ารหัส CSV คุณสามารถใช้โค้ดเช่น
$ spreadsheet = $ this -> get ( ' phpoffice.spreadsheet ' )-> createSpreadsheet ();
$ sheet = $ spreadsheet -> getActiveSheet ();
$ sheet -> setTitle ( $ this -> filterVars [ ' wareCategory ' ]-> getTitle ());
$ columnsMap = [];
$ lineIndex = 2 ;
foreach ( $ data as $ line ) {
foreach ( $ line as $ columnName => $ columnValue ) {
if ( is_int ( $ columnIndex = array_search ( $ columnName , $ columnsMap ))) {
$ columnIndex ++;
} else {
$ columnsMap [] = $ columnName ;
$ columnIndex = count ( $ columnsMap );
}
$ sheet -> getCellByColumnAndRow ( $ columnIndex , $ lineIndex )-> setValue ( $ columnValue );
}
$ lineIndex ++;
}
foreach ( $ columnsMap as $ columnMapId => $ columnTitle ) {
$ sheet -> getCellByColumnAndRow ( $ columnMapId + 1 , 1 )-> setValue ( $ columnTitle );
}
$ writer = $ this -> get ( ' phpoffice.spreadsheet ' )-> createWriter ( $ spreadsheet , ' Xlsx ' );
ob_start ();
$ writer -> save ( ' php://output ' );
$ excelOutput = ob_get_clean ();
return new Response (
$ excelOutput ,
200 ,
[
' content-type ' => ' text/x-csv; charset=windows-1251 ' ,
' Content-Disposition ' => ' attachment; filename="price.xlsx" '
]
);