我目前只想从xslx excel文件中读取数据,只显示数据是我目前正在寻找的,但excel文件总是包含30k +行。我目前的代码如下:
<?php
ini_set('memory_limit', '1024M'); // or you could use 1G
/**
* PHPExcel
*
* Copyright (c) 2017
*
* @category PHPExcel
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE##
*/
/** Error reporting */
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
date_default_timezone_set('America/Guatemala');
define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');
date_default_timezone_set('America/Guatemala');
/** Include PHPExcel_IOFactory */
require_once dirname(__FILE__) . '/phpexcel/PHPExcel/IOFactory.php';
require_once 'phpexcel/PHPExcel.php';
$before = memory_get_usage(true);
$xls_reader = PHPExcel_IOFactory::load('excelfile.xlsx');
$after = memory_get_usage(true);
unset($xls_reader);
printf("usage before loading xlsx file %s\nusage after loading xlsx file %s\ndelta usage %s", $before, $after, $after - $before);
?>
请不要将此问题标记为重复,因为我已经尝试过在以前的问题上发布的每个答案都与此类似,但似乎都没有。
我尝试过使用单元格缓存,同时使用ini_set('memory_limit', '1024M');
和ini_set('memory_limit', '-1');
,我仍然得到完全相同的错误Fatal error: Out of memory (allocated 2097152) (tried to allocate 132604370 bytes) in C:\MAMP\htdocs\dclean\phpexcel\PHPExcel\Reader\Excel2007.php on line 315
。
将memory_limit更改为1024时,分配的数据量会发生变化,但会显示相同的错误。
我想要实现的只是一种处理excel数据的方法,但目前最大的挑战是能够从excel文件加载30K +行。我目前正在使用PHPExcel,但只要&#34;使用很多行&#34;条件存在。
提前感谢您的回答。
答案 0 :(得分:1)
答案 1 :(得分:1)
查看这篇文章,了解PHPExcel替代方案:https://stackoverflow.com/a/3931142/4499987
由于您正在寻找一种节省内存的替代方案,我建议您使用Spout(https://github.com/box/spout)。它只使用10MB,无论电子表格大小如何,读取速度都会快于PHPExcel!