问题

这几天接到一个bug,说的是有某一个后台的列表页有一个excel导出功能,最近不能使用了,我立即登陆系统发现确实如此,但是这个上线项目已经运行长达2年,中间并没有出现问题,于是我拉出源码进行分析,但是代码看不出明显错误,于是马上进行断点测试。

分析

经过测试发现问题出在PHPExcel上面,执行方法save()会报500 Internet sever error。根据经验这一般是权限问题,我马上检查文件夹权限,但是一切正常。这就很奇怪了,于是查阅资料用了网上所有的方法依然没有恢复,就在我一筹莫展的时候,突然想起前段时间升级了7.2版本PHP,于是我动手查阅资料,果然发现问题!

PHPExcel官方已不再维护了这个项目了,PHPExcel的版本停止在1.8。那个时候也没有7.2,所有兼容性当然没有考虑。由于官方已经停止维护我们也不能获取补丁,那我们只能考虑换一个插件去处理。

选择

官方团队在github上又起了一个新项目,叫PhpSpreadsheet,新项目使用了大量的php新特性,比如命名空间,PSR标准,性能也比PHPExcel高了不少。GItHub点这里

如果只是单独的导出excel且数据量巨大的话,我推荐PHP_XLSXWriter,它并没有PHPExcel功能丰富,很多高级操作比如冻结表头,并不具备,但是它导出速度非常快,非常适合于数据量特别大,报表格式不是很复杂的导出需求。GitHub点这里

其大概的用法可以参考大佬写的博文,戳这里

思考

最终我选择PHP_XLSXWriter完成替换,从而解决BUG,从这次BUG中我意识到一个问题,每当升级PHP版本时,插件相应的升级刻不容缓。就像php7.2刚出来的时候YII2等主流框架会报致命错误,其原因就是7.2将Object作为了关键字,而框架将其定义为类。所以导致错误,一样是不向下兼容的错误。尽量避免错误,需要在每次更新版本前多去研究其特性,才可能规避BUG,最后说一句,祝大家永无BUG。

PHP7.2环境中PHPExcel无法导出Excel相关推荐

  1. Winform中通过NPOI导出Excel时通过ICellStyle和IDataFormat格式化日期显示格式

    场景 Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载: https://blog.csdn.net/B ...

  2. Winforn中通过NPOI导出Excel时通过XSSFClientAnchor和XSSFPicture添加图片

    场景 Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载: https://blog.csdn.net/B ...

  3. springboot中使用poi导出excel文件(亲测实现了第一个功能)

    1.POI简介 Jakarta POI 是一套用于访问微软格式文档的Java API. 组件HWPF用于操作Word的; 组件HSSF用于操作Excel格式文件. 2.常用组件 HSSFWorkboo ...

  4. DataTable中的数据导出Excel文件

    DataTable中的数据导出Excel文件 View Code ///<summary> /// 将DataTable中的数据导出到指定的Excel文件中 ///</summary ...

  5. 在vue中把数据导出Excel文件

    在vue中把数据导出Excel文件 第一次尝试写文章 在vue中把数据导出成Excel格式的文件,话不多,上代码: 第一步我们要先安装几个集成的插件 npm install -S file-saver ...

  6. Web中的EasyExcel导出Excel(不创建对象且自定义合并单元格策略)

    Web中的EasyExcel导出Excel(不创建对象且自定义合并单元格策略) 适用于多张表(只查单表数据就用创建对象那种方法) Controller @RequestMapping(value = ...

  7. 64位环境中使用SQL查询excel的方式解决

    --64位环境中使用SQL查询excel的方式 环境: OS:Windows Server 2008 R2 Enterprise MSSQL:Microsoft SQL Server 2008 R2 ...

  8. java中使用jxl导出excel表格的工具类(全网唯一亲测可用,在原来基础上扩展)

    java中后台导出excel的话,有两种方案,一是使用poi(不过由于是windows版本的,存在不兼容,但功能更多,更强大),而是使用jxl(纯java编写,不过兼容,简单一些),可以设置输出的ex ...

  9. Java中导入、导出Excel——HSSFWorkbook 使用

    一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...

最新文章

  1. java执行sql文件_面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他
  2. php和python哪个工资高-学python和php哪个前景好
  3. HiveSQL常用数据处理语句
  4. u-boot的nand驱动写过程分析
  5. 采用web技术开发PC应用
  6. Sklearn 损失函数如何应用到_机器学习大牛最常用的5个回归损失函数,你知道几个?...
  7. android 集成x5内核时 本地没有,腾讯浏览服务-接入文档
  8. 技巧:在Silverlight中如何访问外部xap文件中UserControl
  9. 服务器虚拟化的培训,VMware服务器虚拟化及桌面虚拟化培训.pptx
  10. linux vim 添加注释_vim基础教程
  11. 2017.5.14-15 CPU监控 思考记录
  12. WIn7虚拟机下运行H3CCloud出错问题
  13. 解决cdh4.5.0下 MAP任务看不到状态
  14. SQL Server 中位数、标准差、平均数
  15. java 药品管理系统_基于Java web的医药药品管理系统
  16. 对抗网络学习-FGSM对抗样本生成
  17. C# 阿里云 短信api接口
  18. USGS官网批量下载卫星数据方法
  19. 【华为】某中小型企业网 组网案例—总公司+分公司模式
  20. Manjaro 基础配置及常用软件安装

热门文章

  1. android MAT使用
  2. WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 8
  3. 音视频即时通讯的介绍与前景
  4. java父线程子线程
  5. 解析Spring IOC原理——工厂模式与反射机制的综合应用
  6. 三层架构—实践篇(.Net登录实例)
  7. 将十六进制的字符串转换成整数
  8. jvm:类加载器和类的加载过程
  9. python六十二: 析构方法
  10. const char * 、char const *、 char * const 三者的区别