我正在为某些项目使用模板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,并使用Graph disapear read and write excel file using PHPExcel进行了尝试,但仍然遇到相同的问题。