| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <?php
- namespace PhpOffice\PhpSpreadsheetTests\Chart;
- use PhpOffice\PhpSpreadsheet\Reader\Xlsx as XlsxReader;
- use PHPUnit\Framework\TestCase;
- class ChartsOpenpyxlTest extends TestCase
- {
- private const DIRECTORY = 'samples' . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR;
- public function testBubble2(): void
- {
- $file = self::DIRECTORY . '32readwriteBubbleChart2.xlsx';
- $reader = new XlsxReader();
- $reader->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, '<tx><v>2013</v></tx>'), 'v tag for 2013');
- self::assertSame(1, substr_count($data, '<tx><v>2014</v></tx>'), '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');
- }
- }
- }
|