mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-09-19 22:47:06 +00:00
41c051f54d
Implements native sparkline support (line, column, and win/loss) in the Xlsx reader and writer, resolving issue #4941. - New model classes under Worksheet/Sparkline: Sparkline, SparklineGroup, and the SparklineType enum. - Worksheet gains a sparkline group collection with addSparkline(), addSparklineGroup(), getSparklineGroupCollection(), and removeSparklineGroupCollection(), plus deep-clone support. - Reader/Xlsx/Sparklines parses x14:sparklineGroups from the sheet extLst. - Writer/Xlsx/Worksheet emits x14:sparklineGroups; writeExtLst is refactored so conditional-formatting data bars and sparklines share a single extLst. - Adds unit tests, an Xlsx round-trip test, a runnable sample, and docs.
47 lines
1.4 KiB
PHP
47 lines
1.4 KiB
PHP
<?php
|
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheet\Worksheet\Sparkline\Sparkline;
|
|
use PhpOffice\PhpSpreadsheet\Worksheet\Sparkline\SparklineGroup;
|
|
use PhpOffice\PhpSpreadsheet\Worksheet\Sparkline\SparklineType;
|
|
|
|
require __DIR__ . '/../Header.php';
|
|
/** @var PhpOffice\PhpSpreadsheet\Helper\Sample $helper */
|
|
$spreadsheet = new Spreadsheet();
|
|
$worksheet = $spreadsheet->getActiveSheet();
|
|
$worksheet->setTitle('Sparklines');
|
|
|
|
$helper->log('Add some data to plot');
|
|
$worksheet->fromArray(
|
|
[
|
|
['Region', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Trend'],
|
|
['North', 10, 12, 9, 15, 18],
|
|
['South', 20, 18, 22, 17, 14],
|
|
['East', -3, 4, -1, 5, -2],
|
|
],
|
|
null,
|
|
'A1'
|
|
);
|
|
|
|
$helper->log('Add a line sparkline');
|
|
$worksheet->addSparkline(new Sparkline('G2', 'Sparklines!B2:F2'));
|
|
|
|
$helper->log('Add a column sparkline group with markers');
|
|
$columnGroup = new SparklineGroup();
|
|
$columnGroup->setType(SparklineType::Column)
|
|
->setDisplayHigh(true)
|
|
->setDisplayLow(true)
|
|
->setColorSeries('FF00B050')
|
|
->createSparkline('G3', 'Sparklines!B3:F3');
|
|
$worksheet->addSparklineGroup($columnGroup);
|
|
|
|
$helper->log('Add a win/loss sparkline');
|
|
$winLossGroup = new SparklineGroup();
|
|
$winLossGroup->setType(SparklineType::WinLoss)
|
|
->setDisplayNegative(true)
|
|
->createSparkline('G4', 'Sparklines!B4:F4');
|
|
$worksheet->addSparklineGroup($winLossGroup);
|
|
|
|
// Save
|
|
$helper->write($spreadsheet, __FILE__, ['Xlsx']);
|