PhpSpreadsheet
PhpSpreadsheet copied to clipboard
Rendered charts from .xlsx file dont look like original charts. There is even a chart missing.
This is:
- [* ] a bug report
- [ ] a feature request
- [ ] **not** a usage question (ask them on https://stackoverflow.com/questions/tagged/phpspreadsheet or https://gitter.im/PHPOffice/PhpSpreadsheet)
What is the expected behavior?
When I have a spreadsheet with charts, and I write it to html or PDF, I expect the the charts in the html or PDF to be like the charts in the source spreadsheet
What is the current behavior?
In the rendered html/pdf:
- One of the charts is simply missing (fixed by #3787)
- The charts have different colors than the originals
- The charts are rotated differently
- The charts are positioned differently (probably fixed by #3787)
What are the steps to reproduce?
-
Use the attached xlsx file demo-excel.xlsx
-
Use this code to create PDF from the xlsx file.
<?php
use PhpOffice\PhpSpreadsheet\IOFactory as SpreadsheetIOFactory;
use PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf as ExcelMPDF;
// Set a class which will render the charts.
\PhpOffice\PhpSpreadsheet\Settings::setChartRenderer(
\PhpOffice\PhpSpreadsheet\Chart\Renderer\MtJpGraphRenderer::class
);
// Load the document.
$reader = SpreadsheetIOFactory::createReader('Xlsx');
$reader->setIncludeCharts(true);
$document = $reader->load('demo-excel.xlsx');
// Set up the writer
$writer = new ExcelMPDF($document);
$writer->setIncludeCharts(true);
//$writer->writeAllSheets();
// Create PDF file.
$writer->save('demo-excel.pdf');
Screenshots attached.
What features do you think are causing the issue
- [ ] Reader
- [* ] Writer
- [ ] Styles
- [ ] Data Validations
- [ ] Formula Calculations
- [* ] Charts
- [ ] AutoFilter
- [ ] Form Elements
Does an issue affect all spreadsheet file formats? If not, which formats are affected?
This issue is now only for XLSX files. I have a very comparable XLS file, but that does not render any chart, so thats a different issue altogether.
Which versions of PhpSpreadsheet and PHP are affected?
- PhpSpreadsheet 1.29.0
- I'm using PHP 8.1.23
Thank you for the sample file and the screenshots. The missing chart is a bug in PhpSpreadsheet which I will investigate. The renderer uses its own palette. We do not pass any color information to it, and, even if we did, it could not use it. I believe the rotation falls into the same category. I will ask the vendor. My html output has a different problem than yours, which is a bit strange. My charts are cut off because the renderer creates the charts a little bigger than the spreadsheet, so they overlay each other in the html. I am not sure how I can tell what size the charts are in the spreadsheet, and, even if I knew that, I am not sure if I can pass that information to the renderer. I will ask the vendor.