php7,從phpExcel升級到PhpSpreadsheet
阿新 • • 發佈:2018-12-26
phpExcel的github上已經說明了,phpExcel最後的版本是1.8.1,已經不再維護了,新的專案是PhpSpreadsheet。PhpSpreadsheet是PHPExcel的下一個版本,它提高了相容性,極大地提高了程式碼基礎質量(名稱空間、PSR遵從性、使用最新的PHP語言特性等)。
phpExcel:https://github.com/PHPOffice/PHPExcel
PhpSpreadsheet:https://github.com/PHPOffice/PhpSpreadsheet
部署PhpSpreadsheet
PHP環境配置
- PHP version 5.6 or newer
- PHP extension php_zip enabled
- PHP extension php_xml enabled
- PHP extension php_gd2 enabled (if not compiled in)
使用Composer安裝:composer require phpoffice/phpspreadsheet
效能分析
我使用1w行資料(12列),每次對Cell進行賦值,生成Excel2007檔案,來測試兩者執行時間和記憶體使用率。可以看出新版的PhpSpreadsheet效能並沒有老版本的phpExcel好。在匯出行多的表格時,應採用csv格式。
phpExcel執行時間 | phpExcel佔用記憶體 | PhpSpreadsheet執行時間 | PhpSpreadsheet佔用記憶體 | |
1w行資料 | 6.6s | 38MB | 7.5s | 54MB |
2w行資料 | 16.8s | 70MB | 20s | 100MB |
5w行資料 | 75.4s | 182MB | 79s | 267MB |
使用批量賦值
可以使用fromArray()方法批量賦值,可以看到批量賦值並不能提升效能。
phpExcel執行時間 | phpExcel佔用記憶體 | PhpSpreadsheet執行時間 | PhpSpreadsheet佔用記憶體 | |
1w行資料 | 6.6 | 38MB | 7.6s | 54MB |
2w行資料 | 17s | 70MB | 19s | 100MB |