记一次phpExcel导出问题
问题背景
使用phpSpreadsheet进行导出,保存到服务器然后在下载没有问题,但是直接从浏览器输出然后使用office打开会出现如下问题,奇怪的是wps可以打开。
解决方案
网上有说是 mysql数据编码的问题,也有说是缓冲区中处理BOM头的问题,但是其实处理很简单
(new Xlsx($spreadsheet))->save($save_path ?? 'php://output');
exit;
在输出后加上exit;即可
原因
这个问题的原因在于,如果不在输出完成后强行结束程序,框架可能还会有其他的输出内容会一起写入到excel里面,就会导致读取异常,我们可以看一下错误的excel的文件末尾内容
这一截多余的数据就会导致excel打不开