我目前正在使用PHPExcel使用读取过滤器读取块中的excel文件,因为电子表格有可能在将来变大,我需要确保有足够的内存可以自由处理它无论大小。
作为逻辑的一部分,我想检索工作表中的行数,我知道可以按如下方式完成:
$file = 'path/to/spreadsheet.xslx';
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($file);
return $objPHPExcel->getActiveSheet()->getHighestRow();
我的问题是,如果文件太大,这会导致PHP内存不足吗?
即。就像我在大文件中使用以下内容一样:
$objPHPExcel->getActiveSheet()->tooArray();
如果是这样,当文件变大时,是否有办法检索最高行而不会导致内存问题?
我已经在我的本地计算机上对这个3MB文件进行了测试,它看起来很好,除了花费和越来越长的时间返回文件越大的最高行。
答案 0 :(得分:2)
您可以在不加载整个文件的情况下检索工作表中的行数(或列数):
$file = 'path/to/spreadsheet.xslx';
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$worksheetData = $objReader->listWorksheetInfo($file);
echo '<h3>Worksheet Information</h3>';
echo '<ol>';
foreach ($worksheetData as $worksheet) {
echo '<li>', $worksheet['worksheetName'], '<br />';
echo 'Rows: ', $worksheet['totalRows'],
' Columns: ', $worksheet['totalColumns'], '<br />';
echo 'Cell Range: A1:',
$worksheet['lastColumnLetter'], $worksheet['totalRows'];
echo '</li>';
}
echo '</ol>';
如Helper Methods
PHPExcel User Documentation - Reading Spreadsheet Files
)所示