Миграция существующего / рабочего приложения с PHPExcel
(phpoffice/phpexcel: 1.8.0
) на PHPSpreadsheet
, и возникла проблема при создании файла Excel, содержащего одну или несколько диаграмм .
Без каких-либо вызовов addChart
созданный файл действителен, но как только я добавлю диаграмму, полученный файл станет недействительным. Excel пытается восстановить данные, но это успешно, но без диаграммы.
Инструмент восстановления Excel показывает:
Excel completed file level validation and repair.
Some parts of this workbook may have been repaired or discarded.
Removed Part: /xl/drawings/drawing1.xml part. (Drawing shape)
Текущее использование: PHP 7.1 и phpoffice/phpspreadsheet: "1.10.1"
Мой код очень похож на Пример для PieChart, который я пытаюсь добавить.
Часть кода, который генерирует PieChart:
$ageCounterRowIndex
имеет значение 6 $expectedPointCount
имеет значение 4 - Мои значения тиков находятся в
D3:D6
- Мои значения находятся в
E3:E6
$dataSeriesLabels = [];
$xAxisTickValues = [
new DataSeriesValues(DataSeriesValues::DATASERIES_TYPE_STRING, "$quotedSheetTitle\$D\$3:\$D\$$ageCounterRowIndex", $expectedPointCount)
];
$dataSeriesValues = [
new DataSeriesValues(DataSeriesValues::DATASERIES_TYPE_NUMBER, "$quotedSheetTitle\$E\$3:\$E\$$ageCounterRowIndex", $expectedPointCount),
];
$dataSeries = new DataSeries(
DataSeries::TYPE_PIECHART,
NULL,
range(0, count($dataSeriesValues) - 1),
$dataSeriesLabels,
$xAxisTickValues,
$dataSeriesValues
);
$pieLayout = new Layout();
$pieLayout->setShowVal(TRUE)->setShowPercent(TRUE);
$plotArea = new PlotArea($pieLayout, [ $dataSeries ]);
$legend = new Legend(Legend::POSITION_RIGHT, NULL, FALSE);
$chart = new Chart(
'piechart_' . ($sheetIndex - 1),
null,
$legend,
$plotArea,
true,
0,
NULL,
NULL
);
$chart->setTopLeftPosition('G2');
$chart->setBottomRightPosition('L15');
$sheet->addChart($chart);