使用PHP从{.xls或.xlsx)复制图表

时间:2019-05-22 22:08:37

标签: php excel phpspreadsheet

我正在为某些项目使用模板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进行了尝试,但仍然遇到相同的问题。

0 个答案:

没有答案