Я работаю над файлом шаблона Excel для некоторых проектов, и моя цель - заполнить его PHP. Я создаю документ Excel с двумя листами, один из которых представляет собой таблицу со всей информацией, которую я собираюсь построить, а второй - просто график, основанный на таблице из предыдущего листа.
Всякий раз, когда я использую (https://github.com/PHPOffice/PhpSpreadsheet) PHPSpreadsheet (так как PHPExcel устарел), я могу читать / писать / копировать / и т. Д. Первый лист, но всякий раз, когда я пытаюсь сохранить лист, не касаясь листа графика вообще , ничего не происходит. Я успешно сохраняю файл, но когда я пытаюсь открыть его, я получаю сообщение об ошибке, в котором говорится, что Excel обнаружил в файле нечитаемый контент и восстанавливает его. Я исправляю его, и второй лист с графиком пуст.
https://github.com/PHPOffice/PhpSpreadsheet/issues/382
Это самая близкая вещь, которую я нашел в своей проблеме, и я добавил функции setIncludeChart, но, похоже, ничего не работает.
Мне также кажется, что я исчерпал результаты онлайн-поиска и теперь надеюсь, что есть альтернатива PHPSpreadsheet, которая позволит мне использовать диаграмму в шаблонном (прилагаемом) файле Excel.
$xls = 'KPI_ReadinessTemplate.xls';
$xlsxTarget = 'NEWX_KPI_ReadinessTemplate.xlsx';
$xlsTarget = 'NEW_KPI_ReadinessTemplate.xls';
$inputFileType = 'Xlsx';
$inputFileName = $xlsx;
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
$reader->setIncludeCharts(true);
$spreadsheet = $reader->load($inputFileName);
$worksheet = $spreadsheet->getActiveSheet();
$worksheet->getCell('A1')->setValue('Help me');
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->setIncludeCharts(true);
$fileData = $writer->save($xlsxTarget);
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
$reader->setIncludeCharts(TRUE);
$workbook = $reader->load($xls);
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xls($workbook);
$writer->setIncludeCharts(TRUE);
$writer->save($xlsTarget);
Я ожидаю, что диаграмма будет скопирована, в приведенном выше коде нет изменений файла, это должна быть точная копия предоставленного файла один к одному, но она вообще не работает, так как кажется, что график поврежден, и я должен восстановить Excel в следующий раз, когда я его открою.
РЕДАКТИРОВАТЬ: Я также установил архивированный PHPExcel и попробовал его с помощью График исчезает, чтение и запись файла Excel с использованием PHPExcel , и у меня все еще была та же проблема.