setIncludeCharts(true); $spreadsheet = $reader->load($file); $sheet = $spreadsheet->getActiveSheet(); self::assertSame(1, $sheet->getChartCount()); self::assertSame('Sheet', $sheet->getTitle()); $charts = $sheet->getChartCollection(); self::assertCount(1, $charts); $chart = $charts[0]; self::assertNotNull($chart); self::assertEmpty($chart->getTitle()); self::assertTrue($chart->getOneCellAnchor()); $plotArea = $chart->getPlotArea(); self::assertNotNull($plotArea); $plotSeries = $plotArea->getPlotGroup(); self::assertCount(1, $plotSeries); $dataSeries = $plotSeries[0]; $labels = $dataSeries->getPlotLabels(); self::assertCount(2, $labels); self::assertSame(['2013'], $labels[0]->getDataValues()); self::assertSame(['2014'], $labels[1]->getDataValues()); $plotCategories = $dataSeries->getPlotCategories(); self::assertCount(2, $plotCategories); $categories = $plotCategories[0]; self::assertSame('Number', $categories->getDataType()); self::assertSame('\'Sheet\'!$A$2:$A$5', $categories->getDataSource()); self::assertFalse($categories->getBubble3D()); $categories = $plotCategories[1]; self::assertCount(2, $plotCategories); self::assertSame('Number', $categories->getDataType()); self::assertSame('\'Sheet\'!$A$7:$A$10', $categories->getDataSource()); self::assertFalse($categories->getBubble3D()); $plotValues = $dataSeries->getPlotValues(); self::assertCount(2, $plotValues); $values = $plotValues[0]; self::assertSame('Number', $values->getDataType()); self::assertSame('\'Sheet\'!$B$2:$B$5', $values->getDataSource()); self::assertFalse($values->getBubble3D()); $values = $plotValues[1]; self::assertCount(2, $plotValues); self::assertSame('Number', $values->getDataType()); self::assertSame('\'Sheet\'!$B$7:$B$10', $values->getDataSource()); self::assertFalse($values->getBubble3D()); $plotValues = $dataSeries->getPlotBubbleSizes(); self::assertCount(2, $plotValues); $values = $plotValues[0]; self::assertSame('Number', $values->getDataType()); self::assertSame('\'Sheet\'!$C$2:$C$5', $values->getDataSource()); self::assertFalse($values->getBubble3D()); $values = $plotValues[1]; self::assertCount(2, $plotValues); self::assertSame('Number', $values->getDataType()); self::assertSame('\'Sheet\'!$C$7:$C$10', $values->getDataSource()); self::assertFalse($values->getBubble3D()); $spreadsheet->disconnectWorksheets(); } public function testXml(): void { $infile = self::DIRECTORY . '32readwriteBubbleChart2.xlsx'; $file = 'zip://'; $file .= $infile; $file .= '#xl/charts/chart1.xml'; $data = file_get_contents($file); // confirm that file contains expected tags if ($data === false) { self::fail('Unable to read file'); } else { self::assertSame(0, substr_count($data, 'c:'), 'unusual choice of prefix'); self::assertSame(0, substr_count($data, 'bubbleScale')); self::assertSame(1, substr_count($data, '2013'), 'v tag for 2013'); self::assertSame(1, substr_count($data, '2014'), 'v tag for 2014'); self::assertSame(0, substr_count($data, 'numCache'), 'no cached values'); } $file = 'zip://'; $file .= $infile; $file .= '#xl/drawings/_rels/drawing1.xml.rels'; $data = file_get_contents($file); // confirm that file contains expected tags if ($data === false) { self::fail('Unable to read file'); } else { self::assertSame(1, substr_count($data, 'Target="/xl/charts/chart1.xml"'), 'Unusual absolute address in drawing rels file'); } $file = 'zip://'; $file .= $infile; $file .= '#xl/worksheets/_rels/sheet1.xml.rels'; $data = file_get_contents($file); // confirm that file contains expected tags if ($data === false) { self::fail('Unable to read file'); } else { self::assertSame(1, substr_count($data, 'Target="/xl/drawings/drawing1.xml"'), 'Unusual absolute address in worksheet rels file'); } } }