PHPSpreadsheet:更新模板时保留嵌入对象

PHPSpreadsheet: Keep embedded object when updating template

我正在使用 PHPSpreadsheet 读取模板文件。此模板包含一些嵌入对象和一些 SmartArt。然后我更新一些单元格并将更改写入新文件。我想要这个文件的目的是让它与模板完全一样,除了更改的单元格。我的问题是保存到新文件时所有嵌入对象和 SmartArt 都消失了。有没有什么方法可以将模板中的所有内容保存到新文件中,除了我已经更改的那些确切的单元格?

这是一个简单的示例,仅更改一个单元格。生成的文件将丢失文件中的所有嵌入图形和所有 SmartArt。

$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load("ExcelTemplates/template.xlsx");

$spreadsheet->getActiveSheet()->setCellValue('A1', 'New headline');

$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save("ExcelOutput/generatedFile.xlsx");

不幸的是没有...。如果 PHPSpreadsheet 不知道如何处理元素(例如表单组件、嵌入式对象等),那么它就无法加载,因此不可用保存时

这可能不是您想要的答案;并且唯一可能有效的替代选项是将 COM 与 MS Excel 本身一起使用(如果你在 Windows 服务器上),PUNO 与 Libre/Open Office,或 Ilia 的扩展包装器商业 libXl 库