提问人:Joey Martin 提问时间:10/27/2023 更新时间:10/27/2023 访问量:34
phpSpreadsheet:如果 Excel 文件包含图表,则无法打开 - 但它已经工作了一年多
phpSpreadsheet: Excel file won't open if it includes a chart - but it was working for over a year
问:
我编写了一个 php 脚本,用于创建一个 xlsx(使用 phpSpreadsheet)文件,每个选项卡上都有多个选项卡和图表。这完美地工作了一年多。突然之间,由于没有进行任何编码更改,excel 文件现在表明它已损坏。修复后,文件会打开并显示图表。查看 Excel 修复日志时出现错误:
<repairedRecord>
Repaired Records: Drawing from /xl/drawings/drawing1.xml part (Drawing shape)
</repairedRecord>
<repairedRecord>
Repaired Records: Drawing from /xl/drawings/drawing2.xml part (Drawing shape)
</repairedRecord>
我使用 composer 将 phpSpreadsheet 更新到 1.29(最新版本)。我之前去过 1.23。
以下是代码的重要元素:
require_once(__DIR__ . '/vendor/autoload.php');
use PhpOffice\PhpSpreadsheet\Chart\Chart;
use PhpOffice\PhpSpreadsheet\Chart\DataSeries;
use PhpOffice\PhpSpreadsheet\Chart\Layout;
use PhpOffice\PhpSpreadsheet\Chart\DataSeriesValues;
use PhpOffice\PhpSpreadsheet\Chart\Legend as ChartLegend;
use PhpOffice\PhpSpreadsheet\Chart\PlotArea;
use PhpOffice\PhpSpreadsheet\Chart\Title;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
// Create the chart
$chart1 = new Chart(
'chart1', // name
$title1, // title
$legend1, // legend
$plotArea1, // plotArea
true, // plotVisibleOnly
DataSeries::EMPTY_AS_GAP, // displayBlanksAs
null, // xAxisLabel
null // yAxisLabel - Pie charts don't have a Y-Axis
);
// Set the position where the chart should appear in the worksheet
$chart1->setTopLeftPosition('J5');
$chart1->setBottomRightPosition('l20');
// Add the chart to the worksheet
$worksheet->addChart($chart1);
知道有什么变化阻止了它的工作吗?请记住,这是有效的。没有编码更改。文件确实被创建,但它已损坏并且是可修复的。
答: 暂无答案
评论