PhpSpreadsheet icon indicating copy to clipboard operation
PhpSpreadsheet copied to clipboard

Rendered charts from .xlsx file dont look like original charts. There is even a chart missing.

Open flyke opened this issue 1 year ago • 1 comments

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. result-pdf-file source-xlsx-file

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

flyke avatar Nov 07 '23 07:11 flyke

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.

oleibman avatar Nov 07 '23 16:11 oleibman