phpSpreadsheet:如果 Excel 文件包含图表,则无法打开 - 但它已经工作了一年多

phpSpreadsheet: Excel file won't open if it includes a chart - but it was working for over a year

提问人:Joey Martin 提问时间:10/27/2023 更新时间:10/27/2023 访问量:34

问:

我编写了一个 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);

知道有什么变化阻止了它的工作吗?请记住,这是有效的。没有编码更改。文件确实被创建,但它已损坏并且是可修复的。

phpspreadsheet phpoffice-phpspreadsheet

评论

0赞 Collie-IT Anne K. Frey 11/3/2023
您最近是否更新了 Excel、PHPSpreedsheet 或文件?

答: 暂无答案