版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/loophome/article/details/85247831
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 |