繁体   English   中英

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

[英]PHPExcel: using “getHighestRow” in combination with read filter

我目前正在使用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的文件进行了测试,似乎可以应付,除了文件越来越大,返回最高行需要花费越来越长的时间。

您可以检索工作表中的行(或列)数,而无需加载整个文件:

$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>';

PHPExcel User Documentation - Reading Spreadsheet Files第7部分( Helper Methods )所示PHPExcel User Documentation - Reading Spreadsheet Files

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM