Issue2506Test.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Chart;
  3. use PhpOffice\PhpSpreadsheet\Reader\Xlsx as XlsxReader;
  4. use PhpOffice\PhpSpreadsheet\Writer\Xlsx as XlsxWriter;
  5. use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
  6. class Issue2506Test extends AbstractFunctional
  7. {
  8. private const DIRECTORY = 'tests' . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'Reader' . DIRECTORY_SEPARATOR . 'XLSX' . DIRECTORY_SEPARATOR;
  9. public function readCharts(XlsxReader $reader): void
  10. {
  11. $reader->setIncludeCharts(true);
  12. }
  13. public function writeCharts(XlsxWriter $writer): void
  14. {
  15. $writer->setIncludeCharts(true);
  16. }
  17. public function testDataSeriesValues(): void
  18. {
  19. $reader = new XlsxReader();
  20. $this->readCharts($reader);
  21. $spreadsheet = $reader->load(self::DIRECTORY . 'issue.2506.xlsx');
  22. $worksheet = $spreadsheet->getActiveSheet();
  23. $charts = $worksheet->getChartCollection();
  24. self::assertCount(4, $charts);
  25. $originalChart1 = $charts[0];
  26. self::assertNotNull($originalChart1);
  27. $originalPlotArea1 = $originalChart1->getPlotArea();
  28. self::assertNotNull($originalPlotArea1);
  29. $originalPlotSeries1 = $originalPlotArea1->getPlotGroup();
  30. self::assertCount(1, $originalPlotSeries1);
  31. self::assertSame('0', $originalPlotSeries1[0]->getPlotStyle());
  32. $originalChart2 = $charts[1];
  33. self::assertNotNull($originalChart2);
  34. $originalPlotArea2 = $originalChart2->getPlotArea();
  35. self::assertNotNull($originalPlotArea2);
  36. $originalPlotSeries2 = $originalPlotArea2->getPlotGroup();
  37. self::assertCount(1, $originalPlotSeries2);
  38. self::assertSame('5', $originalPlotSeries2[0]->getPlotStyle());
  39. /** @var callable */
  40. $callableReader = [$this, 'readCharts'];
  41. /** @var callable */
  42. $callableWriter = [$this, 'writeCharts'];
  43. $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx', $callableReader, $callableWriter);
  44. $spreadsheet->disconnectWorksheets();
  45. $sheet = $reloadedSpreadsheet->getActiveSheet();
  46. $charts2 = $sheet->getChartCollection();
  47. self::assertCount(4, $charts2);
  48. $chart1 = $charts[0];
  49. self::assertNotNull($chart1);
  50. $plotArea1 = $chart1->getPlotArea();
  51. self::assertNotNull($plotArea1);
  52. $plotSeries1 = $plotArea1->getPlotGroup();
  53. self::assertCount(1, $plotSeries1);
  54. self::assertSame('0', $plotSeries1[0]->getPlotStyle());
  55. $chart2 = $charts[1];
  56. self::assertNotNull($chart2);
  57. $plotArea2 = $chart2->getPlotArea();
  58. self::assertNotNull($plotArea2);
  59. $plotSeries2 = $plotArea2->getPlotGroup();
  60. self::assertCount(1, $plotSeries2);
  61. self::assertSame('5', $plotSeries2[0]->getPlotStyle());
  62. $reloadedSpreadsheet->disconnectWorksheets();
  63. }
  64. }