以数组的forms读取Excel行:PHPExcel是否具有fgetcsv()等价物?

我正在使用PHPExcel库修改一些CSV阅读代码,并且遇到了通过数据表迭代的问题。

我的代码:

$filetype = PHPExcel_IOFactory::identify($filename); $objReader = PHPExcel_IOFactory::createReader($filetype); $xl = $objReader->load($filename); $objWorksheet = $xl->getActiveSheet(); foreach($objWorksheet->getRowIterator() as $rowIndex => $row){ print_r($row); } 

在迭代之前,我宁愿不将整个工作表转换为数组,因为我的一些Excel文件可能相当大,我宁愿避免大量的内存使用。

我所期望的: $row返回该行所有单元格的数组。

我得到的是: $row是一个PHPExcel对象,其中的单元格在该行中。

在PHPExcel中是否有一个fgetcsv()等价物可以让我得到一行所有单元格的数组?

是的,当你使用一个行Iterator的时候,它会PHPExcel_Worksheet_Row为每一行返回一个PHPExcel_Worksheet_Row对象。 您可以使用Cell Iterator遍历该行对象( $row )(请参阅/Example/28iterator.php

 foreach($objWorksheet->getRowIterator() as $row) { $cellIterator = $row->getCellIterator(); $cellIterator->setIterateOnlyExistingCells(true); // Iterate over the individual cells in the row foreach ($cellIterator as $cell) { // Display information about the cell object echo 'I am Cell ' , $cell->getCoordinate() , PHP_EOL; echo ' and my value is ' , $cell->getValue() , PHP_EOL; } } 

或者,也可以将该行转换为数组,而不是使用Cell Iterator

 $lastColumn = $objWorksheet->getHighestColumn(); foreach($objWorksheet->getRowIterator() as $rowIndex => $row) { // Convert the cell data from this row to an array of values // just as though you'd retrieved it using fgetcsv() $array = $objWorksheet->rangeToArray('A'.$rowIndex.':'.$lastColumn.$rowIndex); } 

$array只是单行中单元格的一个数组,它将只占用与使用fgetcsv()调用检索到的行相同的内存