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

Posted

技术标签:

【中文标题】如何使用 PHPSpreadsheet 在 Excel 上添加新行【英文标题】:How to add new row on Excel using PHPSpreadsheet 【发布时间】:2020-02-01 10:13:03 【问题描述】:

您好,我是这个名为 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');

?>

这会在“hello.xsls”文件中插入新数据替换单元格以前的数据。如何使其将数据写入新行

【问题讨论】:

【参考方案1】:

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

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

你也可以用要插入的行数来调用它,默认是1。

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

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

【讨论】:

谢谢!我会检查它。有没有办法在之后而不是之前插入新行?如果是,我怎样才能获得最后一个行号以将其用作参数? 更新答案。 谢谢!我又学到了一些东西。这回答了我的问题!谢谢!【参考方案2】:

你好我认为这个问题是因为内存耗尽所以通过 php.ini 文件增加你的内存限制

比如 memory_limit = 256M

增加内存限制后,重启你的apache

【讨论】:

以上是关于如何使用 PHPSpreadsheet 在 Excel 上添加新行的主要内容,如果未能解决你的问题,请参考以下文章

如何在不安装的情况下使用 PhpSpreadsheet(如 PHPExcel)

如何更改 phpSpreadSheet 版本?

如何在 PhpSpreadSheet 中设置货币格式?

PHPSpreadsheet - 如何从 PHPSpreadsheet 创建一个 zip 文件?

PHPSpreadsheet/XLSX:如何在 LibreOffice 中默认隐藏评论

如何在 PHPSpreadsheet 中更改单元格颜色