PHP电子表格HTML不会显示图表

问题描述

我正在尝试以HTML显示PHP电子表格中创建的图表。保存到xlsx可以成功。

我正在直接从github上的示例中使用图表创建代码https://github.com/PHPOffice/PhpSpreadsheet/blob/master/samples/templates/chartSpreadsheet.php

$writer = new \PHPOffice\PHPSpreadsheet\Writer\Html_Bootstrap($spreadsheet);
$writer->setEmbedImages(true);
$writer->writeallSheets();
$html_writer->setIncludeCharts(true);
echo $html_writer->generateHTMLAll(); //shows table but no chart
$spreadsheet->setActiveSheetIndex(0);
$writer = new Xlsx($spreadsheet);
$writer->setIncludeCharts(true);
$writer->save('test.xlsx'); //saves file with chart

更新: 我已将问题跟踪到PHPSpreadsheet / Writer / Html.PHP的第738行 无法渲染。我假设Settings::getRenderer()返回null。

解决方法

您必须设置渲染器:

Settings::setChartRenderer(\PhpOffice\PhpSpreadsheet\Chart\Renderer\JpGraph::class);

有关完整示例,请参见示例: https://github.com/PHPOffice/PhpSpreadsheet/blob/master/samples/Chart/32_Chart_read_write_HTML.php