在phpspreadsheet中设置公式导致公式错误:非法字符'~'

问题描述 投票:0回答:1

我想使用phpspreadsheet在excel中获取word书签值。我已经准备了word文档集“test”作为bm1 [bm1是书签名称]。然后,我使用 phpspreadsheet 设置公式链接到单词书签文本。它显示错误

illegal character '~'
。但是,当我手动尝试时,它有效。

<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
$activeWorksheet = $spreadsheet->getActiveSheet();
$wordReportPath=dirname(__FILE__).'\report_output.docx';
//=Word.Document|'C:\xampp\htdocs\Project\test_excelGetWordBookmark.docx'!'!bm1'
$activeWorksheet->setCellValue('A1', "=Word.Document|'C:\xampp\htdocs\Project\test_excelGetWordBookmark.docx'!'!bm1'");

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

错误:

未捕获的 PhpOffice\PhpSpreadsheet\Calculation\Exception: Worksheet!A1 -> 公式错误: 非法字符 '~'

php excel-formula phpspreadsheet
1个回答
0
投票

添加

$writer->setPreCalculateFormulas(false);
并将传递给 setCellValue() 的值的反斜杠更改为正斜杠。

<?php
 require 'vendor/autoload.php';
 use PhpOffice\PhpSpreadsheet\Spreadsheet;
 use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
 $spreadsheet = new Spreadsheet();
 $activeWorksheet = $spreadsheet->getActiveSheet();
 $wordReportPath=dirname(__FILE__).'\report_output.docx';
 $activeWorksheet->setCellValue('A1', "=Word.Document|'C:/xampp/htdocs/Project/test_excelGetWordBookmark.docx'!'!bm1'");

 $writer = new Xlsx($spreadsheet);
 $writer->setPreCalculateFormulas(false);//help to solve the error
 $writer->save('excelFormLinkToWord.xlsx');
© www.soinside.com 2019 - 2024. All rights reserved.