For God so loved the world, that He gave His only begotten Son, that all who believe in Him should not perish but have everlasting life
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

220 lines
7.0 KiB

  1. <?php
  2. /** Error reporting */
  3. error_reporting(E_ALL);
  4. ini_set('display_errors', TRUE);
  5. ini_set('display_startup_errors', TRUE);
  6. date_default_timezone_set('Europe/London');
  7. define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');
  8. date_default_timezone_set('Europe/London');
  9. /**
  10. * PHPExcel
  11. *
  12. * Copyright (c) 2006 - 2015 PHPExcel
  13. *
  14. * This library is free software; you can redistribute it and/or
  15. * modify it under the terms of the GNU Lesser General Public
  16. * License as published by the Free Software Foundation; either
  17. * version 2.1 of the License, or (at your option) any later version.
  18. *
  19. * This library is distributed in the hope that it will be useful,
  20. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  21. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  22. * Lesser General Public License for more details.
  23. *
  24. * You should have received a copy of the GNU Lesser General Public
  25. * License along with this library; if not, write to the Free Software
  26. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  27. *
  28. * @category PHPExcel
  29. * @package PHPExcel
  30. * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
  31. * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
  32. * @version ##VERSION##, ##DATE##
  33. */
  34. /** PHPExcel */
  35. require_once dirname(__FILE__) . '/../Classes/PHPExcel.php';
  36. $objPHPExcel = new PHPExcel();
  37. $objWorksheet = $objPHPExcel->getActiveSheet();
  38. $objWorksheet->fromArray(
  39. array(
  40. array('', 2010, 2011, 2012),
  41. array('Q1', 12, 15, 21),
  42. array('Q2', 56, 73, 86),
  43. array('Q3', 52, 61, 69),
  44. array('Q4', 30, 32, 0),
  45. )
  46. );
  47. // Set the Labels for each data series we want to plot
  48. // Datatype
  49. // Cell reference for data
  50. // Format Code
  51. // Number of datapoints in series
  52. // Data values
  53. // Data Marker
  54. $dataSeriesLabels1 = array(
  55. new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010
  56. new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011
  57. new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012
  58. );
  59. // Set the X-Axis Labels
  60. // Datatype
  61. // Cell reference for data
  62. // Format Code
  63. // Number of datapoints in series
  64. // Data values
  65. // Data Marker
  66. $xAxisTickValues1 = array(
  67. new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4
  68. );
  69. // Set the Data values for each data series we want to plot
  70. // Datatype
  71. // Cell reference for data
  72. // Format Code
  73. // Number of datapoints in series
  74. // Data values
  75. // Data Marker
  76. $dataSeriesValues1 = array(
  77. new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4),
  78. new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4),
  79. new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4),
  80. );
  81. // Build the dataseries
  82. $series1 = new PHPExcel_Chart_DataSeries(
  83. PHPExcel_Chart_DataSeries::TYPE_AREACHART, // plotType
  84. PHPExcel_Chart_DataSeries::GROUPING_PERCENT_STACKED, // plotGrouping
  85. range(0, count($dataSeriesValues1)-1), // plotOrder
  86. $dataSeriesLabels1, // plotLabel
  87. $xAxisTickValues1, // plotCategory
  88. $dataSeriesValues1 // plotValues
  89. );
  90. // Set the series in the plot area
  91. $plotArea1 = new PHPExcel_Chart_PlotArea(NULL, array($series1));
  92. // Set the chart legend
  93. $legend1 = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false);
  94. $title1 = new PHPExcel_Chart_Title('Test %age-Stacked Area Chart');
  95. $yAxisLabel1 = new PHPExcel_Chart_Title('Value ($k)');
  96. // Create the chart
  97. $chart1 = new PHPExcel_Chart(
  98. 'chart1', // name
  99. $title1, // title
  100. $legend1, // legend
  101. $plotArea1, // plotArea
  102. true, // plotVisibleOnly
  103. 0, // displayBlanksAs
  104. NULL, // xAxisLabel
  105. $yAxisLabel1 // yAxisLabel
  106. );
  107. // Set the position where the chart should appear in the worksheet
  108. $chart1->setTopLeftPosition('A7');
  109. $chart1->setBottomRightPosition('H20');
  110. // Add the chart to the worksheet
  111. $objWorksheet->addChart($chart1);
  112. // Set the Labels for each data series we want to plot
  113. // Datatype
  114. // Cell reference for data
  115. // Format Code
  116. // Number of datapoints in series
  117. // Data values
  118. // Data Marker
  119. $dataSeriesLabels2 = array(
  120. new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010
  121. new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011
  122. new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012
  123. );
  124. // Set the X-Axis Labels
  125. // Datatype
  126. // Cell reference for data
  127. // Format Code
  128. // Number of datapoints in series
  129. // Data values
  130. // Data Marker
  131. $xAxisTickValues2 = array(
  132. new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4
  133. );
  134. // Set the Data values for each data series we want to plot
  135. // Datatype
  136. // Cell reference for data
  137. // Format Code
  138. // Number of datapoints in series
  139. // Data values
  140. // Data Marker
  141. $dataSeriesValues2 = array(
  142. new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4),
  143. new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4),
  144. new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4),
  145. );
  146. // Build the dataseries
  147. $series2 = new PHPExcel_Chart_DataSeries(
  148. PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType
  149. PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // plotGrouping
  150. range(0, count($dataSeriesValues2)-1), // plotOrder
  151. $dataSeriesLabels2, // plotLabel
  152. $xAxisTickValues2, // plotCategory
  153. $dataSeriesValues2 // plotValues
  154. );
  155. // Set additional dataseries parameters
  156. // Make it a vertical column rather than a horizontal bar graph
  157. $series2->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL);
  158. // Set the series in the plot area
  159. $plotArea2 = new PHPExcel_Chart_PlotArea(NULL, array($series2));
  160. // Set the chart legend
  161. $legend2 = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false);
  162. $title2 = new PHPExcel_Chart_Title('Test Column Chart');
  163. $yAxisLabel2 = new PHPExcel_Chart_Title('Value ($k)');
  164. // Create the chart
  165. $chart2 = new PHPExcel_Chart(
  166. 'chart2', // name
  167. $title2, // title
  168. $legend2, // legend
  169. $plotArea2, // plotArea
  170. true, // plotVisibleOnly
  171. 0, // displayBlanksAs
  172. NULL, // xAxisLabel
  173. $yAxisLabel2 // yAxisLabel
  174. );
  175. // Set the position where the chart should appear in the worksheet
  176. $chart2->setTopLeftPosition('I7');
  177. $chart2->setBottomRightPosition('P20');
  178. // Add the chart to the worksheet
  179. $objWorksheet->addChart($chart2);
  180. // Save Excel 2007 file
  181. echo date('H:i:s') , " Write to Excel2007 format" , EOL;
  182. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
  183. $objWriter->setIncludeCharts(TRUE);
  184. $objWriter->save(str_replace('.php', '.xlsx', __FILE__));
  185. echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL;
  186. // Echo memory peak usage
  187. echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL;
  188. // Echo done
  189. echo date('H:i:s') , " Done writing file" , EOL;
  190. echo 'File has been created in ' , getcwd() , EOL;