| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | use PhpOffice\PhpSpreadsheet\Chart; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Chart\DataSeries; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Chart\DataSeriesValues; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Chart\Legend; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Chart\PlotArea; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Chart\Title; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\IOFactory; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Spreadsheet; | 
					
						
							| 
									
										
										
										
											2016-08-31 17:18:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | require __DIR__ . '/Header.php'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | $spreadsheet = new Spreadsheet(); | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | $worksheet = $spreadsheet->getActiveSheet(); | 
					
						
							|  |  |  | $worksheet->fromArray( | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |             ['', '', 'Budget', 'Forecast', 'Actual'], | 
					
						
							|  |  |  |             ['2010', 'Q1', 47, 44, 43], | 
					
						
							|  |  |  |             ['', 'Q2', 56, 53, 50], | 
					
						
							|  |  |  |             ['', 'Q3', 52, 46, 45], | 
					
						
							|  |  |  |             ['', 'Q4', 45, 40, 40], | 
					
						
							|  |  |  |             ['2011', 'Q1', 51, 42, 46], | 
					
						
							|  |  |  |             ['', 'Q2', 53, 58, 56], | 
					
						
							|  |  |  |             ['', 'Q3', 64, 66, 69], | 
					
						
							|  |  |  |             ['', 'Q4', 54, 55, 56], | 
					
						
							|  |  |  |             ['2012', 'Q1', 49, 52, 58], | 
					
						
							|  |  |  |             ['', 'Q2', 68, 73, 86], | 
					
						
							|  |  |  |             ['', 'Q3', 72, 78, 0], | 
					
						
							|  |  |  |             ['', 'Q4', 50, 60, 0], | 
					
						
							|  |  |  |         ] | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //	Set the Labels for each data series we want to plot
 | 
					
						
							|  |  |  | //		Datatype
 | 
					
						
							|  |  |  | //		Cell reference for data
 | 
					
						
							|  |  |  | //		Format Code
 | 
					
						
							|  |  |  | //		Number of datapoints in series
 | 
					
						
							|  |  |  | //		Data values
 | 
					
						
							|  |  |  | //		Data Marker
 | 
					
						
							|  |  |  | $dataSeriesLabels = [ | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  |     new DataSeriesValues('String', 'Worksheet!$C$1', null, 1), //	'Budget'
 | 
					
						
							|  |  |  |     new DataSeriesValues('String', 'Worksheet!$D$1', null, 1), //	'Forecast'
 | 
					
						
							|  |  |  |     new DataSeriesValues('String', 'Worksheet!$E$1', null, 1), //	'Actual'
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | ]; | 
					
						
							|  |  |  | //	Set the X-Axis Labels
 | 
					
						
							|  |  |  | //		Datatype
 | 
					
						
							|  |  |  | //		Cell reference for data
 | 
					
						
							|  |  |  | //		Format Code
 | 
					
						
							|  |  |  | //		Number of datapoints in series
 | 
					
						
							|  |  |  | //		Data values
 | 
					
						
							|  |  |  | //		Data Marker
 | 
					
						
							|  |  |  | $xAxisTickValues = [ | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  |     new DataSeriesValues('String', 'Worksheet!$A$2:$B$13', null, 12), //	Q1 to Q4 for 2010 to 2012
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | ]; | 
					
						
							|  |  |  | //	Set the Data values for each data series we want to plot
 | 
					
						
							|  |  |  | //		Datatype
 | 
					
						
							|  |  |  | //		Cell reference for data
 | 
					
						
							|  |  |  | //		Format Code
 | 
					
						
							|  |  |  | //		Number of datapoints in series
 | 
					
						
							|  |  |  | //		Data values
 | 
					
						
							|  |  |  | //		Data Marker
 | 
					
						
							|  |  |  | $dataSeriesValues = [ | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  |     new DataSeriesValues('Number', 'Worksheet!$C$2:$C$13', null, 12), | 
					
						
							|  |  |  |     new DataSeriesValues('Number', 'Worksheet!$D$2:$D$13', null, 12), | 
					
						
							|  |  |  |     new DataSeriesValues('Number', 'Worksheet!$E$2:$E$13', null, 12), | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //	Build the dataseries
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | $series = new DataSeries( | 
					
						
							|  |  |  |     DataSeries::TYPE_BARCHART, // plotType
 | 
					
						
							|  |  |  |     DataSeries::GROUPING_CLUSTERED, // plotGrouping
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  |     range(0, count($dataSeriesValues) - 1), // plotOrder
 | 
					
						
							|  |  |  |     $dataSeriesLabels, // plotLabel
 | 
					
						
							|  |  |  |     $xAxisTickValues, // plotCategory
 | 
					
						
							|  |  |  |     $dataSeriesValues        // plotValues
 | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | //	Set additional dataseries parameters
 | 
					
						
							|  |  |  | //		Make it a vertical column rather than a horizontal bar graph
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | $series->setPlotDirection(DataSeries::DIRECTION_COL); | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | //	Set the series in the plot area
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | $plotArea = new PlotArea(null, [$series]); | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | //	Set the chart legend
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | $legend = new Legend(Legend::POSITION_BOTTOM, null, false); | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | $title = new Title('Test Grouped Column Chart'); | 
					
						
							|  |  |  | $xAxisLabel = new Title('Financial Period'); | 
					
						
							|  |  |  | $yAxisLabel = new Title('Value ($k)'); | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | //	Create the chart
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | $chart = new Chart( | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  |     'chart1', // name
 | 
					
						
							|  |  |  |     $title, // title
 | 
					
						
							|  |  |  |     $legend, // legend
 | 
					
						
							|  |  |  |     $plotArea, // plotArea
 | 
					
						
							|  |  |  |     true, // plotVisibleOnly
 | 
					
						
							|  |  |  |     0, // displayBlanksAs
 | 
					
						
							|  |  |  |     $xAxisLabel, // xAxisLabel
 | 
					
						
							|  |  |  |     $yAxisLabel  // yAxisLabel
 | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //	Set the position where the chart should appear in the worksheet
 | 
					
						
							|  |  |  | $chart->setTopLeftPosition('G2'); | 
					
						
							|  |  |  | $chart->setBottomRightPosition('P20'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //	Add the chart to the worksheet
 | 
					
						
							|  |  |  | $worksheet->addChart($chart); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Save Excel 2007 file
 | 
					
						
							|  |  |  | $filename = $helper->getFilename(__FILE__); | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | $writer = IOFactory::createWriter($spreadsheet, 'Xlsx'); | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | $writer->setIncludeCharts(true); | 
					
						
							|  |  |  | $callStartTime = microtime(true); | 
					
						
							|  |  |  | $writer->save($filename); | 
					
						
							|  |  |  | $helper->logWrite($writer, $filename, $callStartTime); |