Как я могу читать таблицу Excel по строкам с помощью PHPExcel? У меня есть лист, содержащий более 100000 строк, но я хочу читать только 500 строк.
$sheetData = $objPHPExcel->getActiveSheet(); $highestRow = $sheetData->getHighestRow(); $highestColumn = $sheetData->getHighestColumn(); $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); echo '<table>'; for ($row = 1; $row <= $highestRow; ++$row) { echo '<tr>'; for ($col = 0; $col <= $highestColumnIndex; ++$col) { echo '<td>' . $sheetData->getCellByColumnAndRow($col, $row)->getValue() . '</td>'; } echo '</tr>'; } echo '</table>';
Если вы хотите читать только 500 строк, то загружайте только 500 строк с помощью фильтра чтения:
$inputFileType = 'Excel5'; $inputFileName = './sampleData/example2.xls'; /** Define a Read Filter class implementing PHPExcel_Reader_IReadFilter */ class myReadFilter implements PHPExcel_Reader_IReadFilter { private $_startRow = 0; private $_endRow = 0; /** Set the list of rows that we want to read */ public function setRows($startRow, $chunksize) { $this->_startRow = $startRow; $this->_endRow = $startRow + $chunkSize; } public function readCell($column, $row, $worksheetName = '') { // Only read the heading row, and the rows that are configured in $this->_startRow and $this->_endRow if (($row >= $this->_startRow && $row < $this->_endRow)) { return true; } return false; } } /** Create a new Reader of the type defined in $inputFileType **/ $objReader = PHPExcel_IOFactory::createReader($inputFileType); /** Define how many rows we want to read for each "chunk" **/ $chunkSize = 500; /** Create a new Instance of our Read Filter **/ $chunkFilter = new myReadFilter(); /** Tell the Reader that we want to use the Read Filter that we've Instantiated **/ $objReader->setReadFilter($chunkFilter); /** Tell the Read Filter, the limits on which rows we want to read this iteration **/ $chunkFilter->setRows(1,500); /** Load only the rows that match our filter from $inputFileName to a PHPExcel Object **/ $objPHPExcel = $objReader->load($inputFileName);
См. PHPExcel User Documentation - Reading Spreadsheet Files
документе /Documentation
для получения более подробной информации о Read Filters
Вы можете загрузить 500 строк или даже установить начальный индекс, задав параметры непосредственно функции getRowIterator.
$path = "Your File Path HERE"; $fileObj = \PHPExcel_IOFactory::load( $path ); $sheetObj = $fileObj->getActiveSheet(); $startFrom = 50; //default value is 1 $limit = 550; //default value is null foreach( $sheetObj->getRowIterator($startFrom, $limit) as $row ){ foreach( $row->getCellIterator() as $cell ){ $value = $cell->getCalculatedValue(); } }
Этот цикл проходит через все строки и столбцы и присваивает значение ячейки $ cellValue. Если $ i больше 500, он вырывает цикл
$objWorksheet = $objPHPExcel->getActiveSheet(); $i = 0; foreach ($objWorksheet->getRowIterator() as $row) { if ($i > 500) break; $i++; foreach ($row->getCellIterator() as $cell) { $cellValue = trim($cell->getCalculatedValue()); } }
require_once "/PATH TO PHP EXCEL FOLDER/PHPExcel.php"; $inputFileName = $_FILES['FILENAME']; $objTpl = PHPExcel_IOFactory::load('./PATH TO UPLOAD FOLDER/' . $inputFileName); $sheetData = $objTpl->getActiveSheet()->toArray(null, true, true, true); array_shift($sheetData); $i=0; $test_array = array(); foreach($sheetData as $key=>$val){ if($i < 500) $test_array[$i] = $val; $i++; }