如何使用 PHPSpreadsheet 在 Excel 上添加新行

jpn*_*eey 6 php excel phpexcel phpspreadsheet

嗨,我是这个名为 PHPSpreadsheet 的库的新手。我尝试阅读它的文档,但我无法理解。

我想在现有的Excel 文件中插入一个新行,这是我目前所拥有的:

<?php 

require '../vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$inputFileName = 'Excel/hello.xlsx';
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);

$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Updated');

$writer = new Xlsx($spreadsheet);
$writer->save('../controller/excel/hello.xlsx');

?>
Run Code Online (Sandbox Code Playgroud)

这会在 'hello.xsls' 文件中插入新数据,替换单元格的先前数据。如何让它将数据写入新行

Nig*_*Ren 9

要创建新行,您需要insertNewRowBefore()使用要插入的行号之前调用...

$sheet = $spreadsheet->getActiveSheet();
$sheet->insertNewRowBefore(1);
$sheet->setCellValue('A1', 'Updated');
Run Code Online (Sandbox Code Playgroud)

您也可以使用要插入的行数调用它,默认值为 1。

如果要追加一行,可以调用getHighestRow()查找最后一行并为新行添加 1。还要更改setCellValue()调用中列的硬编码以使用此行...

$sheet = $spreadsheet->getActiveSheet();
$row = $sheet->getHighestRow()+1;
$sheet->insertNewRowBefore($row);
$sheet->setCellValue('A'.$row, 'Updated');
Run Code Online (Sandbox Code Playgroud)

  • 更新了答案。 (2认同)