PHPExcel报错:谷歌浏览器显示网页可能暂时无法连接,或者它已永久性地移动到了新网址的原因?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LJFPHP/article/details/86135004

      最近接手新项目的时候,本地的phpexcel跑不起来,导出文件的时候报错:“谷歌浏览器显示网页可能暂时无法连接,或者它已永久性地移动到了新网址的原因?”,国际惯例,碰到问题先百度,然后这里分析下报错的原因。

一、修改导出的excel版本

1、修改导出excel版本为excel5

 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

我本地原来导出的是excel2007,但是百度的时候,有不少人都说修改为excel5就好了:

 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

      这里的excel5和excel2007对应的是excel的版本。excel5是指1993年 的Excel 5.0版本,有点太老了。不过我本地换成excel5之后,确实是能正常导出了。

2、碰到的问题

导出excel之后,打开提示:

Excel无法打开文件xxx.xlsx,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配

关于excel打不开文件,这里有三个解决办法及思路:
(1)修改注册表
参考链接:https://blog.csdn.net/gl486546/article/details/76065316

这个方法有点治标不治本的意思,博主本地未测试。

(2)可能是错误信息在导出之前输出了,或者是BOM头等

在导出excel的时候,如果提前输出了debug信息,或者带着BOM头确实会影响生成的excel。
解决办法参考链接:
https://blog.csdn.net/beyond__devil/article/details/53283352

博主本地并不是这个问题造成的。

(3)可能是header头没写对

      phpexcel在导出文件的时候,需要修改对应的header头信息,特别是关于文件类型的header头一定不能错,这部分大家可以参考下面的链接,看看自己本地的header头有没有问题。

参考链接:https://www.imdupeng.cn/coding/php/phpexcel-header.html

      博主这边根据这三个办法,还是没能正常打开,感觉是excel的版本问题。导出的应该是excel2007才对,直接修改excel5并不是真正的解决办法。

二、php 7.0以上高版本的兼容问题

继续百度,发现一篇帖子说是要修改phpexcel的文件,因为php 7.0以上的版本和phpexcel有兼容问题。

然而还有一个不容易发现的问题,在高版本PHP7下,出现ERR_INVALID_RESPONSE的错误还可能由于下面的原因导致

Fatal error: 'break' not in the 'loop' or 'switch' context in <mypath>\PHPExcel\PHPExcel\Calculation\Functions.php on line 581
请打开PHPExcel\Calculation\Functions.php文件,删除掉581行的break即可

参考链接:https://blog.csdn.net/yicixing7/article/details/65628064

      博主这里删掉break之后,确实能正确导出了。这里导出的是excel2007版本,本地也能正常打开了,算是完美解决。

三、其他的问题

1、如果是要正常导出,要在最后加上exit

如果只是正常导出,则需要在导出方法的最后加个exit,代表到此结束。这样我们就能直接在浏览器上看到下载的效果,并且不会再运行其他的代码。

2、本地保存,浏览器白屏问题

如果是要保存,然后保存之后还要执行其他的代码,那这个保存方法的最后不要加exit。同时要注意保存方法的位置,最好是放到最后,这样可以防止浏览器白屏。
博主这里因为放的位置不对,放到其他的渲染页面方法之前保存excel文件,导致浏览器一直白屏。后面把这个方法换换位置就好了。

end

猜你喜欢

转载自blog.csdn.net/LJFPHP/article/details/86135004