6
回答
phpexcel 读取 excel 数据、保存图片 提示内存溢出错误?
终于搞明白,存储TCO原来是这样算的>>>   
本帖最后由 scz467 于 2013-9-13 17:31 编辑
问题参考: http://www.excelpx.com/thread-309564-1-1.html
Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 9216 bytes) inD:\AppServ\ankh\isrc\class\PHPExcel\Reader\Excel5.php on line1009

我想把 excel 中的数据以及图片都保存下来,图片保存到 mysql 数据库,图片保存到指定目录中 
我现在的程序是 数据量小的时候(图片少的时候)可以操作成功,但是一旦数据量变大(图片变多了) 就会报上面的错了加载 excel 都没有加载成功,

我在网上看了好多帖子 说设置 phpexcel 缓存,我操作了 没成功,本人对 phpexcel 不熟,哪位大神遇见过类似的问题,我这里面的图片都是高清大图 一张图4、5Mb 




我代码在附近里面 哪位大神给指点指点吧  郁闷两三天了 网上资料也看了不少(execl图片如下图 没有截全)




                    
举报
scz467
发帖于4年前 6回/1K+阅

以下是问题补充:

  • @scz467 :php.ini 我已经设置了,涉及到全部是没有限制,但是还是报内存溢出啊 (4年前)

看代码没用的,修改PHP.INI里的内存配置才是王道。

解析EXCEL,是个非常耗内存的事情。

--- 共有 3 条评论 ---
scz467回复 @南湖船老大 : 这些都设置了 现在我不认为是 php.ini 的问题了 memory_limit 1024M 了 4年前 回复
南湖船老大回复 @scz467 : memory_limit ?这个呢? 4年前 回复
scz467php.ini 涉及到的几个选项我都没有限制了上传无限大,执行时间无限大 4年前 回复

我没看错吧,1G的内存都用完了啊?你的excel是有多大啊?

看看改改代码吧,读取的时候边读取边回收资源试试。

--- 共有 1 条评论 ---
scz467怎么个边读取边回收资源啊 ,现在是加载都加载不了,excel数据量不大,但是excel中的图片比较多 图片大 4年前 回复

看到这个问题,我还是要留言一下吧,用2003导出xls会省内存,和导出多图也不会有坏图的!不信可试试

                            if(file_exists( '.'.$value [$field [$k]])){
                            // 图片生成
                            $objDrawing[$k] = new \PHPExcel_Worksheet_Drawing();
                            $objDrawing[$k]->setPath( '.'.$value [$field [$k]]);
                            // 设置宽度高度
                            $objDrawing[$k]->setHeight(80);//照片高度
                            $objDrawing[$k]->setWidth(80); //照片宽度
                            /*设置图片要插入的单元格*/
                            $objDrawing[$k]->setCoordinates($Excel_letter [$k] . $line);
                            // 图片偏移距离
                            $objDrawing[$k]->setOffsetX(12);
                            $objDrawing[$k]->setOffsetY(12);
                            $objExcel->getActiveSheet()->getRowDimension($line)->setRowHeight(70);
                            $objDrawing[$k]->setWorksheet($objExcel->getActiveSheet());
                            }

导出图之前要判断文件是否存在,不然报错!

顶部