为什么PHPExcel不允许写入超过5000行

为什么PHPExcel不允许写入超过5000行,php,phpexcel,Php,Phpexcel,有谁能告诉我为什么PHPExcel不允许超过5000行。 我在项目中使用开源PHPExcel生成报告,我无法从Mysql数据库中写入超过5000行的数据。我的结果集在执行查询时获取7230条记录。如果没有你的代码或类的代码,我想是很难修复的…你的意思是你不能在XLS文件或工作表中写入超过5k行吗?否则,一个难看的解决方法可能是在第一张纸上写5K行,在第二张纸上写其余的行(如果DB变大,那么每张纸上写5K行)。 我不认为XLS有5k行的限制,所以你的脚本中应该有错误或配置错误的地方。你试过几次了吗

有谁能告诉我为什么PHPExcel不允许超过5000行。
我在项目中使用开源PHPExcel生成报告,我无法从Mysql数据库中写入超过5000行的数据。我的结果集在执行查询时获取7230条记录。如果没有你的代码或类的代码,我想是很难修复的…你的意思是你不能在XLS文件或工作表中写入超过5k行吗?否则,一个难看的解决方法可能是在第一张纸上写5K行,在第二张纸上写其余的行(如果DB变大,那么每张纸上写5K行)。
我不认为XLS有5k行的限制,所以你的脚本中应该有错误或配置错误的地方。你试过几次了吗?它总是打印5k行吗?或者是因为超时?(关于脚本或连接)

这种类型的问题很可能是服务器内存问题。您使用的是哪种类型的服务器?您确定它有足够的内存和资源来处理大型数据文件吗?如果你不能分辨哪种方式,最好的解决办法是一次读取几千条记录,处理它们,然后移动到下一个块。我自己更喜欢将大数据文件分解成可管理的部分(文件),然后在这些部分上处理每一部分,以获得我想要的结果。一旦处理完所有数据块,它们就可以合并在一起,形成一个新的大数据文件。

几乎可以肯定这是一个超时或内存问题。工作表大小的唯一PHPExcel限制是65536行和256(IV)列(使用Excel5编写器时);或1048576行和16384(XFD)列(使用Excel2007编写器时)


确保始终启用错误日志记录。。。使用try/catch块捕获任何PHPExcel异常。阅读PHPExcel站点关于内存和性能的讨论线程。

我也有同样的问题。您需要分配足够的时间和内存限制

我已在3台不同的服务器上测试了我的解决方案,结果如下:

大约5000条记录(12列)

正在读取文件:
09:48:22峰值内存使用率:1.25 MB

读取数据:
09:48:31峰值内存使用率:54.5 MB

将数据索引到数组中后:
09:48:35峰值内存使用率:68.5 MB

记录:4504

索引到370.00MB后,我增加了内存和读取22000条记录的时间

以下是解决方案(假定代码序列中的所有其他内容都是正确的) 在程序/函数中调用PHPExcel的位置:

ini_set("max_execution_time", 'time_limit'); //see manual
在此处执行所有初始化,以便所有对象都已准备就绪,然后分配内存以读取文件并将数据索引到程序内部结构中:

ini_set('memory_limit', '???'); //your memory limit as string
$excel = $excelReader->load($filePath);
"Memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB"
//do the rest of the structure!

一个好主意是通过某些类别的数据来管理所有这些数据,这样您就不会运行到400 MB—很容易出错

几乎可以肯定这是超时或内存问题。工作表大小的唯一PHPExcel限制是65536行和256(IV)列(使用Excel5编写器时);或1048576行和16384(XFD)列(使用Excel2007编写器时)

你可以换这条线

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


然后,它允许写入超过65536行的记录。

您能够准确检索5000行吗?如果是这样的话,PHPExcel可能有一个限制,你最好去CodePlex的支持论坛问问——我一直觉得对PHPExcel的支持非常好。如果不是,则可能是您的server.ini_set('memory_limit','-1')存在内存/超时问题;只有一个人能解决这个问题
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');