问题

这几天接到一个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. Spring知识点总结-2
  2. 使用DFS求任意两点的所有路径
  3. mysql日期加一天的公式_2020国考行测冲刺指导:数学运算常用公式大盘点
  4. boost::gil::pixel_bit_size用法的测试程序
  5. Python 总结题目
  6. 深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(二)-带宽控制...
  7. 三分钟解决Matlab中文乱码问题
  8. 登录验证----滑块/拼图碎片/随机num
  9. 排序链表(归并排序)
  10. Go手动安装pkg包初体验
  11. Dlink PHP p308av,D-Link系列路由器漏洞挖掘
  12. 通过批处理文件bat批量修改图片名称
  13. 微信小程序实战八:优惠券页面的实现
  14. springbootadmin 客户端监控配置
  15. 思考力,决定你的产品力
  16. TCP系列43—拥塞控制—6、Congestion Window Validation(CWV)
  17. python小游戏之垃圾分类
  18. 注解与反射 - 注解
  19. Openstack之路(九)云硬盘服务Cinder
  20. android一键拨号

热门文章

  1. 【转】首先为人编写程序,其次才是计算机
  2. 网络生活点滴 网络管理实用8招技巧
  3. ibatis代码生成器
  4. 给求职的同学的几点建议
  5. boot.asm文件注释
  6. java获取文件夹下所有文件的名称
  7. JS代码的window.location属性详解
  8. golang显式类型初始化
  9. 脚本重启nginx进程
  10. CC++面试题大汇总