1. 程式人生 > >php7,從phpExcel升級到PhpSpreadsheet

php7,從phpExcel升級到PhpSpreadsheet

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