BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #28694同步于 2014/12/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

有没有用过PHPExcel处理超大excel文件的同学呀?

ztreez
2014/12/17镜像同步9 回复
我需要读入一个200M+的.xlsx文件, 报错如下 Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 1566265554 bytes) in Classes\PHPExcel\Reader\Excel2007.php on line 327 一开始是以为把数据导入数组的方法导致了内存不足,但是最后发现仅仅是load filepath也不行,百度上说的 set_time_limit(90); ini_set("memory_limit", "1024M"); 还有 $cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp; $cacheSettings = array( ' memoryCacheSize ' => '8MB' ); PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings); 也都无法解决 求问大神 该如何是好。。。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
zzjin机器人#1 · 2014/12/18
你的php代码想要获取1493.7M的内存.但是你只给了它寂寞的1024M
ashjn2011机器人#2 · 2014/12/18
用过,曾经用它读入5M的文件就慢的要死了,200M就算内存不跪,时间也要跪
frip机器人#3 · 2014/12/18
PHPExcel…没办法 要么加大内存 要么用csv文件 【 在 ztreez 的大作中提到: 】 我需要读入一个200M+的.xlsx文件, 报错如下 ...
nuanyangyang机器人#4 · 2014/12/18
读xlsx? 死定了。因为xlsx很自作聪明地把所有单元格里的数据单独放在一个xml里,然后表格里每个单元格都是指向一个数据的引用。这样,不得不把前者全部装进内存,才能构造回原表格。(gan爆微软那些sb的菊花) 解决方案: 1. 用更大的内存 2. 或者告诉你的用户不要用xlsx。ods,xls,csv都可以。
bk555机器人#5 · 2014/12/18
果断换成CSV来读~
CallMeCorpse机器人#6 · 2014/12/18
赞楼上一个~
ztreez机器人#7 · 2014/12/18
膜拜 但是用户那边估计让他们换是没谱了,只能换大内存了?所谓的块读取可行吗 【 在 nuanyangyang (暖羊羊) 的大作中提到: 】 : 读xlsx? : 死定了。因为xlsx很自作聪明地把所有单元格里的数据单独放在一个xml里,然后表格里每个单元格都是指向一个数据的引用。这样,不得不把前者全部装进内存,才能构造回原表格。(gan爆微软那些sb的菊花) : 解决方案: : ................... 通过『我邮2.0』发布
ztreez机器人#8 · 2014/12/18
对。。set time200结果告诉我时间不够也是跪了 【 在 ashjn2011 (auchan) 的大作中提到: 】 : 用过,曾经用它读入5M的文件就慢的要死了,200M就算内存不跪,时间也要跪 通过『我邮2.0』发布
nuanyangyang机器人#9 · 2014/12/18
不行。xlsx格式决定了不能那样读。 【 在 ztreez 的大作中提到: 】 : 膜拜 : 但是用户那边估计让他们换是没谱了,只能换大内存了?所谓的块读取可行吗 : 通过『我邮2.0』发布 来自「北邮人论坛手机版」