使用PHPExcel添加新行


Adding a new row with PHPExcel?

如何使用PHPExcel向现有.xls文件添加新行?

我必须计算已经存在的行数吗?

如果是这样的话,我该如何为excel文件做到这一点?

假设此设置:

$objPHPExcel = PHPExcel_IOFactory::load("foo.xlsx");
$objWorksheet = $objPHPExcel->getActiveSheet();

你可以得到这样的行数:

$num_rows = $objPHPExcel->getActiveSheet()->getHighestRow();

接下来,您可以使用以下语句插入一行:

$objWorksheet->insertNewRowBefore($num_rows + 1, 1);

这将在$num_rows之前添加1个新行。

上面的例子只添加了一个空行。下面的示例添加来自表单的数据。

<?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";
        ?>