麻烦用PHP解析格式很大的excel文档

时间:2013-08-05 05:17:18

标签: php phpexcel

我知道已经有很多类似于这个的问题(我已经阅读了大部分内容),但我仍然没有找到解决方案,所以我想我会问自己的具体问题。

好的,所以我花了两天时间研究并尝试在php中解析Excel(.xlsx)电子表格。我尝试使用PHPExcel库,但是在尝试将电子表格加载到内存时会超时。电子表格不是很大,只有240kb,但它确实有40多个工作表,每个都是大量格式化的(即单元格颜色,字体大小/颜色等等)。由于我不需要任何格式化我尝试$objReader->setReadDataOnly(true);以便忽略它,但在尝试读取文件时它仍然超时。

所以我的下一步是尝试仅加载我实际需要使用的最后几个工作表,$objReader->setLoadSheetsOnly(array(42,43,44,45));这样加载成功,但现在的问题是最后的工作表几乎完全是公式,总数和读数据来自以前的工作表。由于我为了加载文档而排除了那些早期的工作表,因此在检索每个单元格的值时不能使用$cell->getCalculatedValue();,从而使其他所有内容都过时了。

所以我的问题是,为了加载和阅读这个Excel电子表格,我还能做些什么吗?

我应该尝试使用另一个库吗?或者我应该尝试一种完全不同的方法,因为我的最终目标是能够将部分数据上传到数据库吗?

Here是我正在使用的特定电子表格的链接。

感谢您花时间阅读本文以及您可以提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

好的,我弄清楚为什么花了这么长时间,部分原因可能是我使用的是过时的PHPExcel版本,但我相信真正的罪魁祸首是我从之前的项目中启用了XDebug。因为一旦我禁用了脚本加载工作簿就好了,速度为1.5001秒并使用了17.5 MB的内存。感谢帮助人员,它让我朝着正确的方向前进。

答案 1 :(得分:0)

使用下面的代码

require_once 'Classes/PHPExcel.php';
$objPHPExcel = PHPExcel_IOFactory::load("myExcelFile.xls");
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML');
$objWriter->writeAllSheets();
$objWriter->save('php://output');

并且您仍然会出现超时错误,这意味着您的脚本运行时间超过30秒,但PHP的执行时间限制为30秒

请为php脚本增加max execution time