# PhpSpreadsheet套件產生XLS或ODS檔 * 完全可以替代PHPExcel(PHPExcel已不再維護) * 要使用PhpSpreadsheet需要滿足以下條件: * PHP5.6或更高版本 * PHP的延伸模組php_zip、php_xml、php_gd2需要啟用 * 安裝 ```sh composer require phpoffice/phpspreadsheet ``` * [Migration from PHPExcel](https://phpspreadsheet.readthedocs.io/en/latest/topics/migration-from-PHPExcel/) * [使用PhpSpreadsheet匯入&匯出Excel](https://www.itread01.com/content/1550257047.html) ### 與PHPExcel語法差異 * 引入函式庫 ```php <?php //Before require_once 'PHPExcel.php'; //After require_once 'vendor/autoload.php'; ``` * 引入空間名稱(可以根據自己實際需要引入) ```php <?php //After use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Cell\DataType; ``` * 創建 ```php <?php //Before $phpexcel = new PHPExcel(); $sheet1 = $phpexcel->getActiveSheet()->setTitle("基本資料"); $phpexcel->setActiveSheetIndex(0); $objWriter->save("php://output"); //After $spreadsheet = new Spreadsheet(); $sheet1 = $spreadsheet->getActiveSheet()->setTitle("基本資料"); $spreadsheet->setActiveSheetIndex(0); $objWriter->save("php://output"); ``` * 匯出Excel檔案格式(檔案含特殊字須轉出xlsx格式xls會爆錯) ```php <?php //Before header('Content-Type:application/vnd.ms-excel'); header('Content-Disposition:attachment;filename=人員基本資料.xlsx'); header('Cache-Control:max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($phpexcel,'Xlsx'); //After header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename=人員基本資料.xlsx'); header('Cache-Control: max-age=0'); $objWriter = IOFactory::createWriter($spreadsheet, 'Xlsx'); ``` * 匯出Ods檔案格式 ```php <?php //After header('Content-Type: application/vnd.oasis.opendocument.spreadsheet'); header('Content-Disposition:attachment;filename=人員基本資料.ods'); header('Cache-Control:max-age=0'); $objWriter = IOFactory::createWriter($spreadsheet,'Ods'); ``` * 儲存格寫法參考 * [官網](https://phpspreadsheet.readthedocs.io/en/latest/topics/accessing-cells/) * 其他資源 * [國人自製套件 yidas/phpspreadsheet-helper](https://github.com/yidas/phpspreadsheet-helper) * [GitHub Link](https://github.com/PHPOffice/PhpSpreadsheet/tree/master/samples) * [Blog Link](https://chilinlin.blogspot.com/2014/11/phpexcel_19.html)