insertNewRow使用phpspreadsheet之前不要更改单元格名称的坐标

xytpbqjk  于 11个月前  发布在  PHP
关注(0)|答案(1)|浏览(114)

我有excel文件3行。我给予名字,第一行第一列amount1。第三行是=amount1+A2

200  ~ amount1
300
---
500
---

字符串
现在,我想在第1行之前插入一行,并将值设置为第1列。我使用phpspreadsheet来做到这一点。名称,amount1不与值200一起进入下一行。这会影响公式结果。

new row  ~ amount1
200
300
---
error
---


代码如下:

require '../vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
$reader         =\PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx");
$spreadsheet    =$reader->load("File1.xlsx");
$sheet          =$spreadsheet->getActiveSheet();
$sheet->insertNewRowBefore(1);
$sheet->setCellValue('A1', 'new row');
$writer = new Xlsx($spreadsheet);
$writer->save('File1_output.xlsx');

5jdjgkvh

5jdjgkvh1#

从getNamedRanges()更新$range->setValue('Sheet1!$C$2');
Sheet1!$C$1 -> Sheet1!$C$2

require '../vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
$reader         =\PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx");
$spreadsheet    =$reader->load("File1.xlsx");
$sheet          =$spreadsheet->getActiveSheet();
$sheet->insertNewRowBefore(1);
$sheet->setCellValue('A1', 'new row');
 foreach ($spreadsheet->getNamedRanges() as $range) {
  if($range->getName()=='amount1'){
    $range->setValue('Sheet1!$C$2');
   }

  }
$writer = new Xlsx($spreadsheet);
$writer->save('File1_output.xlsx');

字符串

相关问题