[嗨,我是这个不熟悉的名为PHPSpreadsheet的库。我试图阅读它的文档,但我听不懂。
我想在现有的Excel文件中插入新行,这是我到目前为止的内容
<?php
require '../vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
/* $spreadsheet = new Spreadsheet(); */
$inputFileName = 'Excel/hello.xlsx';
/** Load $inputFileName to a Spreadsheet Object **/
$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'文件中插入新数据,替换单元格的先前数据。
有什么想法吗?而且,加载较大的excel文件也会返回致命错误
Fatal error: Allowed memory size of 134217728 bytes exhausted
您好,我认为此问题是由于内存耗尽而引起的,因此通过php.ini文件增加内存限制
例如memory_limit = 256M
增加内存限制后,重新启动您的Apache
要创建新行,您需要在要插入的行号之前调用insertNewRowBefore()
...
insertNewRowBefore()
您还可以通过插入许多行来调用它,默认值为1。
如果要追加一行,可以调用$sheet = $spreadsheet->getActiveSheet();
$sheet->insertNewRowBefore(1);
$sheet->setCellValue('A1', 'Updated');
查找最后一行,并为新行添加1。还要更改getHighestRow()
调用中列的硬编码以也使用此行...
setCellValue()