web-dev-qa-db-ja.com

PHPExcelで新しい行を追加しますか?

PHPExcelを使用して、既存の.xlsファイルに新しい行を追加するにはどうすればよいですか?

すでに存在する行数を計算する必要がありますか?

もしそうなら、どうすればそれをExcelファイルに対して行うことができますか?

14
Novak

このセットアップを想定すると:

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

次のように行数を取得できます。

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

これに続いて、次のステートメントを使用して行の挿入を調べることができます。

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

これにより、_$num_rows_の前に新しい行が1つ追加されます。

29
Daniel Li

上記の例では、空白行のみが追加されます。以下の例では、フォームからのデータを追加しています。

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