Home >php教程 >php手册 >PHPExcel导出Excel文件时出现错误的解决办法

PHPExcel导出Excel文件时出现错误的解决办法

WBOY
WBOYOriginal
2016-06-13 09:56:211916browse

phpexcel文件是一款开源的php表格操作插件,只要用到excel数据导入导出的朋友大多数人都选择此款插件了,但在使用中也会有问题出现,下面来看问题分析研究。

PHPExcel是PHP中功能最强大的导入、导出、操作Microsoft Excel的开源项目。但是它体系复杂,有时会让人难以掌控。


PHPExcel导出Excel表的使用方法网上已经很多了,本文就不赘述。不过,在使用过程中,我却发现了一个莫名其妙的问题:那就是使用PHPExcel自动导出excel的文件有时候能够正常导出并打开,有时候生成的excel文件却无法打开,Excel2007提示“发现无法读取的内容”。

使用文本编辑器打开生成的Excel文件,发现一行提示“Fatal error: Call to a member function setValue() on a non-object in PHPExcel/Calculation/FormulaParser.php on line 431”。

经过仔细而又痛苦的检查发现,原来是因为在写入单元格的文本值中,有些值以等号开头,例如“====中国青年报...”,结果PHPExcel在写入这个单元格的时候,将其判定为公式,于是调用公式解析器去计算相应的值,但是又无法正确进行计算(因为本来就不是公式嘛),所以就导致生成的excel文件无法打开。

解决办法非常简单

就是在往excel单元格写入文本值之前,先过滤掉等号“=”,即可。

 

以下是两种错误的解决办法:

(1)Fatal error: Maximum execution time of 30 seconds exceeded解决错误方法
需要修改php.ini文件,如果是使用Ubuntu 9.04 Server的服务器,可以在/etc/php5/apache2/下找到php.ini文件,如果是Freebsd,可以在/usr/local/lib/下找到php.ini文件。使用sudo权限编辑下面的语句:

将如下语句:
max_execution_time = 30
修改为:
max_execution_time = 300
也就是将PHP脚本最长执行时间从30秒延长到300秒。

然后重启一下Apache服务器,如果是Ubuntu Server的服务器,可以使用如下命令:
sudo /etc/init.d/apache2 restart

(2)Fatal error: Allowed memory size of 16777216 bytes exhausted 的解决办法
一样地需要修改php.ini文件:

将如下语句:
memory_limit = 16M
修改为:
memory_limit = 512M

也就是将PHP脚本所能够申请的内存从16M扩大到512M。具体数字可以根据自己的需要确定。

一样需要重启Apache服务器。

需要注意的是:
(1)以上的修改可能存在一定风险,例如给服务器造成过大的负担。所以请再三确认是否有必要给PHPExcel或者是其他PHP程序开放更大的内存空间以及更长的执行时间。
(2)修改完php.ini之后,只有重启Apache之后,新的设置才会生效。
(3)php.ini中的设置,请根据自己服务器的情况量力而行。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn