Как добавить новую строку в существующий файл .xls с помощью PHPExcel?
Нужно ли вычислять количество строк, которые уже существуют?
Если да, то как я могу сделать это для файла excel?
Предполагая эту настройку:
$objPHPExcel = PHPExcel_IOFactory::load("foo.xlsx"); $objWorksheet = $objPHPExcel->getActiveSheet();
Вы можете получить количество строк:
$num_rows = $objPHPExcel->getActiveSheet()->getHighestRow();
После этого вы можете вставить строку, используя следующую инструкцию:
$objWorksheet->insertNewRowBefore($num_rows + 1, 1);
Это добавляет 1 новую строку до $num_rows
.
В приведенном выше примере добавляется только пустая строка. В приведенном ниже примере добавляются данные, поступающие из формы.
<?php require_once '../inc/phpexcel/Classes/PHPExcel.php'; require_once '../inc/phpexcel/Classes/PHPExcel/IOFactory.php'; $objPHPExcel = PHPExcel_IOFactory::load("myExcelFile.xlsx"); $objWorksheet = $objPHPExcel->getActiveSheet(); //add the new row $num_rows = $objPHPExcel->getActiveSheet()->getHighestRow(); $objWorksheet->insertNewRowBefore($num_rows + 1, 1); $name = isset($_POST['name']) ? $_POST['name'] : ''; if($submit){ //SAVING THE NEW ROW - on the last position in the table $objWorksheet->setCellValueByColumnAndRow(0,$num_rows+1,$name); } //display the table echo '<table>'."\n"; echo '<thead> <tr> <th>Company Name</th> </tr> </thead>'."\n"; echo '<tbody>'."\n"; foreach ($objWorksheet->getRowIterator() as $row) { echo '<tr>'."\n"; $cellIterator = $row->getCellIterator(); $cellIterator->setIterateOnlyExistingCells(false); foreach ($cellIterator as $cell) { echo '<td>'.$cell->getValue().'</td>'."\n"; } echo '</tr>'."\n"; } echo '</tbody>'."\n"; echo '</table>'."\n"; ?>