# Charts
By using the WithCharts
concern, you can add one or multiple charts to your worksheet.
# Instantiating a chart
You first have to instantiate a new PhpOffice\PhpSpreadsheet\Worksheet\Chart
, passing the name, title, legend and plot in the constructor.
$label = [new DataSeriesValues('String', 'Worksheet!$B$1', null, 1)];
$categories = [new DataSeriesValues('String', 'Worksheet!$B$2:$B$5', null, 4)];
$values = [new DataSeriesValues('Number', 'Worksheet!$A$2:$A$5', null, 4)];
$series = new DataSeries(DataSeries::TYPE_PIECHART, DataSeries::GROUPING_STANDARD,
range(0, \count($values) - 1), $label, $categories, $values);
$plot = new PlotArea(null, [$series]);
$legend = new Legend();
$chart = new Chart('chart name', new Title('chart title'), $legend, $plot);
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
You can view all available properties for Charts on the PhpSpreadsheet docs (opens new window).
# Adding a single chart
When you've instantiated the chart, you can add the WithCharts
concern to your export class and return the Chart instance in the charts
method.
<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\WithCharts;
use PhpOffice\PhpSpreadsheet\Worksheet\Chart;
class InvoicesExport implements WithCharts
{
public function charts()
{
$label = [new DataSeriesValues('String', 'Worksheet!$B$1', null, 1)];
$categories = [new DataSeriesValues('String', 'Worksheet!$B$2:$B$5', null, 4)];
$values = [new DataSeriesValues('Number', 'Worksheet!$A$2:$A$5', null, 4)];
$series = new DataSeries(DataSeries::TYPE_PIECHART, DataSeries::GROUPING_STANDARD,
range(0, \count($values) - 1), $label, $categories, $values);
$plot = new PlotArea(null, [$series]);
$legend = new Legend();
$chart = new Chart('chart name', new Title('chart title'), $legend, $plot);
return $chart;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Adding multiple charts
You can add multiple charts to the worksheet by returning an array in the charts
method.
<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\WithCharts;
use PhpOffice\PhpSpreadsheet\Worksheet\Chart;
class InvoicesExport implements WithCharts
{
public function charts()
{
$label = [new DataSeriesValues('String', 'Worksheet!$B$1', null, 1)];
$categories = [new DataSeriesValues('String', 'Worksheet!$B$2:$B$5', null, 4)];
$values = [new DataSeriesValues('Number', 'Worksheet!$A$2:$A$5', null, 4)];
$series = new DataSeries(DataSeries::TYPE_PIECHART, DataSeries::GROUPING_STANDARD,
range(0, \count($values) - 1), $label, $categories, $values);
$plot = new PlotArea(null, [$series]);
$legend = new Legend();
$chart = new Chart('chart name', new Title('chart title'), $legend, $plot);
$chart2 = new Chart('chart 2 name', new Title('chart 2 title'), $legend, $plot);
return [$chart, $chart2];
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26