首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPxcel toArray函数返回不必要的行

问PHPxcel toArray函数返回不必要的行
EN

Stack Overflow用户
提问于 2014-03-27 11:01:50
回答 1查看 1.6K关注 0票数 0

我使用PHPExcel读取和解析excel文件。我发现这是一个很好的库,太可惜了,内存占用这么多。(这里希望移到PHP5.3中可以进一步优化)。我的问题是关于来自Worksheet.php的toArray()方法,它用于获取文件数据的数组。我以推荐的方式(使用读取筛选器)循环遍历文件行号,但发现返回的数组“填充”了空值,直到读取筛选器的范围开始为止。

例如,假设read的行范围设置为从3行开始,读取2行,我得到

代码语言:javascript
复制
   0,    1,    2
1: null, null, null
2: null, null, null
3: "1",  "2",  "3"
4: "a",  "b",  "c"

在读取大文件时,这不会影响内存占用吗?有办法阻止这种行为吗?(我似乎找不到任何推荐信)。对结果使用array_slice应该是没有意义的,因为它只会创建一个新的更小的数组,原始数组仍然会创建内存尖峰。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-27 11:28:47

toArray()方法/ cell /接受从单元格'A1‘到工作表中最高的列/行的值.不管是否填充了单元格;是的,这将影响内存占用;这就是为什么我们还提供了一个rangeToArray()方法,您可以在其中指定实际的范围。

代码语言:javascript
复制
$myArray = $objPHPExcel->getActiveSheet()->rangeToArray('A3:C4');

当您将读筛选器应用于只读取单元格A3到C4时,PHPExcel仍然使用原始文件中单元格A3的值填充单元格A3,它根本不填充在读取筛选器之外的单元格中的数据.这意味着那些超出指定范围的单元格没有加载,因此节省了内存。但是,如果您尝试访问脚本范围以外的单元格( toArray()确实引用单元格A1、B1、C1、A2、B2、C2 ),那么将在内存中创建空单元格,从而导致内存尖峰。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22685620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档