| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-29 08:39:42 +00:00
										 |  |  | use PhpOffice\PhpSpreadsheet\Chart\Chart; | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | 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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-01 08:48:59 +00:00
										 |  |  | require __DIR__ . '/../Header.php'; | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | $spreadsheet = new Spreadsheet(); | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | $worksheet = $spreadsheet->getActiveSheet(); | 
					
						
							|  |  |  | $worksheet->fromArray( | 
					
						
							|  |  |  |     [ | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |         ['', 'Rainfall (mm)', 'Temperature (°F)', 'Humidity (%)'], | 
					
						
							|  |  |  |         ['Jan', 78, 52, 61], | 
					
						
							|  |  |  |         ['Feb', 64, 54, 62], | 
					
						
							|  |  |  |         ['Mar', 62, 57, 63], | 
					
						
							|  |  |  |         ['Apr', 21, 62, 59], | 
					
						
							|  |  |  |         ['May', 11, 75, 60], | 
					
						
							|  |  |  |         ['Jun', 1, 75, 57], | 
					
						
							|  |  |  |         ['Jul', 1, 79, 56], | 
					
						
							|  |  |  |         ['Aug', 1, 79, 59], | 
					
						
							|  |  |  |         ['Sep', 10, 75, 60], | 
					
						
							|  |  |  |         ['Oct', 40, 68, 63], | 
					
						
							|  |  |  |         ['Nov', 69, 62, 64], | 
					
						
							|  |  |  |         ['Dec', 89, 57, 66], | 
					
						
							|  |  |  |     ] | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +00:00
										 |  |  | // 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
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | $dataSeriesLabels1 = [ | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +00:00
										 |  |  |     new DataSeriesValues(DataSeriesValues::DATASERIES_TYPE_STRING, 'Worksheet!$B$1', null, 1), // Temperature
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | ]; | 
					
						
							|  |  |  | $dataSeriesLabels2 = [ | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +00:00
										 |  |  |     new DataSeriesValues(DataSeriesValues::DATASERIES_TYPE_STRING, 'Worksheet!$C$1', null, 1), // Rainfall
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | ]; | 
					
						
							|  |  |  | $dataSeriesLabels3 = [ | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +00:00
										 |  |  |     new DataSeriesValues(DataSeriesValues::DATASERIES_TYPE_STRING, 'Worksheet!$D$1', null, 1), // Humidity
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | ]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +00:00
										 |  |  | // Set the X-Axis Labels
 | 
					
						
							|  |  |  | //     Datatype
 | 
					
						
							|  |  |  | //     Cell reference for data
 | 
					
						
							|  |  |  | //     Format Code
 | 
					
						
							|  |  |  | //     Number of datapoints in series
 | 
					
						
							|  |  |  | //     Data values
 | 
					
						
							|  |  |  | //     Data Marker
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | $xAxisTickValues = [ | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +00:00
										 |  |  |     new DataSeriesValues(DataSeriesValues::DATASERIES_TYPE_STRING, 'Worksheet!$A$2:$A$13', null, 12), // Jan to Dec
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | ]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +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
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | $dataSeriesValues1 = [ | 
					
						
							| 
									
										
										
										
											2017-09-09 09:26:01 +00:00
										 |  |  |     new DataSeriesValues(DataSeriesValues::DATASERIES_TYPE_NUMBER, 'Worksheet!$B$2:$B$13', null, 12), | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | ]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +00:00
										 |  |  | // Build the dataseries
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | $series1 = new DataSeries( | 
					
						
							|  |  |  |     DataSeries::TYPE_BARCHART, // plotType
 | 
					
						
							|  |  |  |     DataSeries::GROUPING_CLUSTERED, // plotGrouping
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  |     range(0, count($dataSeriesValues1) - 1), // plotOrder
 | 
					
						
							|  |  |  |     $dataSeriesLabels1, // plotLabel
 | 
					
						
							|  |  |  |     $xAxisTickValues, // plotCategory
 | 
					
						
							|  |  |  |     $dataSeriesValues1        // plotValues
 | 
					
						
							|  |  |  | ); | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +00:00
										 |  |  | // Set additional dataseries parameters
 | 
					
						
							|  |  |  | //     Make it a vertical column rather than a horizontal bar graph
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | $series1->setPlotDirection(DataSeries::DIRECTION_COL); | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +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
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | $dataSeriesValues2 = [ | 
					
						
							| 
									
										
										
										
											2017-09-09 09:26:01 +00:00
										 |  |  |     new DataSeriesValues(DataSeriesValues::DATASERIES_TYPE_NUMBER, 'Worksheet!$C$2:$C$13', null, 12), | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | ]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +00:00
										 |  |  | // Build the dataseries
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | $series2 = new DataSeries( | 
					
						
							|  |  |  |     DataSeries::TYPE_LINECHART, // plotType
 | 
					
						
							|  |  |  |     DataSeries::GROUPING_STANDARD, // plotGrouping
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  |     range(0, count($dataSeriesValues2) - 1), // plotOrder
 | 
					
						
							|  |  |  |     $dataSeriesLabels2, // plotLabel
 | 
					
						
							| 
									
										
										
										
											2018-01-09 05:22:03 +00:00
										 |  |  |     [], // plotCategory
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  |     $dataSeriesValues2        // plotValues
 | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +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
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | $dataSeriesValues3 = [ | 
					
						
							| 
									
										
										
										
											2017-09-09 09:26:01 +00:00
										 |  |  |     new DataSeriesValues(DataSeriesValues::DATASERIES_TYPE_NUMBER, 'Worksheet!$D$2:$D$13', null, 12), | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | ]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +00:00
										 |  |  | // Build the dataseries
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | $series3 = new DataSeries( | 
					
						
							|  |  |  |     DataSeries::TYPE_AREACHART, // plotType
 | 
					
						
							|  |  |  |     DataSeries::GROUPING_STANDARD, // plotGrouping
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  |     range(0, count($dataSeriesValues2) - 1), // plotOrder
 | 
					
						
							|  |  |  |     $dataSeriesLabels3, // plotLabel
 | 
					
						
							| 
									
										
										
										
											2018-01-09 05:22:03 +00:00
										 |  |  |     [], // plotCategory
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  |     $dataSeriesValues3        // plotValues
 | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +00:00
										 |  |  | // Set the series in the plot area
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | $plotArea = new PlotArea(null, [$series1, $series2, $series3]); | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +00:00
										 |  |  | // Set the chart legend
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | $legend = new Legend(Legend::POSITION_RIGHT, null, false); | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | $title = new Title('Average Weather Chart for Crete'); | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +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
 | 
					
						
							| 
									
										
										
										
											2020-04-18 14:37:45 +00:00
										 |  |  |     DataSeries::EMPTY_AS_GAP, // displayBlanksAs
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  |     null, // xAxisLabel
 | 
					
						
							|  |  |  |     null   // yAxisLabel
 | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +00:00
										 |  |  | // Set the position where the chart should appear in the worksheet
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | $chart->setTopLeftPosition('F2'); | 
					
						
							|  |  |  | $chart->setBottomRightPosition('O16'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-06 02:02:16 +00:00
										 |  |  | // Add the chart to the worksheet
 | 
					
						
							| 
									
										
										
										
											2016-08-31 16:15:54 +00:00
										 |  |  | $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); |