Я использую 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
Других решений пока нет …