php - 使用 PHP 从(.xls 或 .xlsx)复制图表
问题描述
我正在为一些项目制作模板 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);
我期望图表被复制,在上面的代码中没有对文件进行修改,它应该是所提供文件的精确一对一副本,但它根本不起作用,因为它看起来像图表被损坏了,下次打开它时我必须修复它。
编辑:我还安装了存档的 PHPExcel 并尝试使用Graph disapear 使用 PHPExcel 读写 excel 文件,但我仍然遇到同样的问题。
解决方案
推荐阅读
- node.js - 如何在赛普拉斯中共享变量值
- c# - 如何使用 MVVM 模式在 Xamarin 表单中为 ZXingScannerView 添加自定义覆盖?
- hadoop - 使用控制字符作为分隔符的 Sqoop 导入
- sql - 将 MDDYYYY 或 MDYYYY 格式字符串插入日期列
- python - 我如何修补方法并返回 pytest 中的传入参数?
- regex - 括号之间的正则表达式匹配在括号内的第一个空格处停止
- c# - KeyHook 用于检测同时按下的多个键
- python - sympy 中是否存在离散有限随机变量的复合分布?
- java - 如何处理实现 Comparable和 Not Comparable的类
? - python-2.7 - 从最小数量的 Sentine-1 SAR 图像创建马赛克,该图像具有最大覆盖多边形 shapefile