我知道已经有很多与此类似的问题(我已经阅读了其中的大部分),但我仍然没有找到解决方案,所以我想我会问自己的问题并具体说明。
好吧,过去两天我一直在研究并尝试在 php 中解析 Excel (.xlsx) 电子表格。我试过使用 PHPExcel但是,库在尝试将电子表格加载到内存中时超时。电子表格不是很大,只有 240kb,但它确实有 40 多个工作表,每个工作表都经过严格格式化(即单元格颜色、字体大小/颜色等)。因为我不需要任何格式,所以我尝试了 $objReader->setReadDataOnly(true);
以忽略它,但在尝试读取文件时它仍然超时。
所以我的下一步是尝试只加载我实际需要使用的最后几个工作表,$objReader->setLoadSheetsOnly(array(42,43,44,45));
成功了,但现在的问题是最后一张表几乎完全是公式,这些公式汇总并读取了之前工作表中的数据。由于我为了加载文档而排除了那些较早的工作表,因此我无法在检索每个单元格的值时使用 $cell->getCalculatedValue();
,从而使其他一切都过时了。
所以我的问题是,我还能做些什么来加载和阅读这个 Excel 电子表格吗?
我应该尝试使用另一个库吗?或者我应该尝试一种完全不同的方法,因为我的最终目标是能够将部分数据上传到数据库?
Here是指向我正在使用的特定电子表格的链接。
感谢您花时间阅读本文并感谢您提供的任何帮助。
最佳答案
好吧,我明白了为什么要花这么长时间,部分原因可能是我使用的是过时版本的 PHPExcel,但我相信真正的罪魁祸首是我在之前的项目中启用了 XDebug。因为一旦我禁用该脚本,该脚本就可以以 1.5001 秒的速度加载工作簿并使用 17.5 MB 的内存。感谢大家的帮助,这让我找到了正确的方向。
关于php - 使用 PHP 解析重度格式化的 excel 文档时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18050988/