PHPExcel:将“getHighestRow”与读取过滤器结合使用

时间:2014-07-25 14:00:40

标签: php phpexcel

我目前正在使用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文件进行了测试,它看起来很好,除了花费和越来越长的时间返回文件越大的最高行。

1 个答案:

答案 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

的第7节(PHPExcel User Documentation - Reading Spreadsheet Files)所示