From 8ab0200584d11bc270ee0b57abada71713fb7c9b Mon Sep 17 00:00:00 2001 From: Mark Baker Date: Fri, 27 Jul 2012 12:22:47 +0100 Subject: [PATCH] Further chart bugfixes, plus an example of changing chart data for use in templates --- Classes/PHPExcel/Chart/DataSeriesValues.php | 11 --- Classes/PHPExcel/Writer/Excel2007/Chart.php | 3 +- Tests/33chartcreate.php | 2 +- Tests/34chartupdate.php | 75 +++++++++++++++++++++ 4 files changed, 78 insertions(+), 13 deletions(-) create mode 100644 Tests/34chartupdate.php diff --git a/Classes/PHPExcel/Chart/DataSeriesValues.php b/Classes/PHPExcel/Chart/DataSeriesValues.php index 741e454..8ae4d0c 100644 --- a/Classes/PHPExcel/Chart/DataSeriesValues.php +++ b/Classes/PHPExcel/Chart/DataSeriesValues.php @@ -278,12 +278,7 @@ class PHPExcel_Chart_DataSeriesValues } public function refresh(PHPExcel_Worksheet $worksheet) { -// echo '$this->_dataSource:',PHP_EOL; -// var_dump($this->_dataSource); if ($this->_dataSource !== NULL) { -// echo '$this->_dataValues:',PHP_EOL; -// var_dump($this->_dataValues); - $calcEngine = PHPExcel_Calculation::getInstance(); $newDataValues = PHPExcel_Calculation::_unwrapResult( $calcEngine->_calculateFormulaValue( @@ -293,13 +288,7 @@ class PHPExcel_Chart_DataSeriesValues ) ); -// echo '$newDataValues:',PHP_EOL; -// var_dump($newDataValues); $this->_dataValues = PHPExcel_Calculation_Functions::flattenArray($newDataValues); - $this->_dataValues = array_values(array_shift($newDataValues)); -// $this->_dataValues = array_filter($this->_dataValues,array($this,'_stripNulls')); -// echo '$this->_dataValues:',PHP_EOL; -// var_dump($this->_dataValues); } } diff --git a/Classes/PHPExcel/Writer/Excel2007/Chart.php b/Classes/PHPExcel/Writer/Excel2007/Chart.php index 2128582..7316d8d 100644 --- a/Classes/PHPExcel/Writer/Excel2007/Chart.php +++ b/Classes/PHPExcel/Writer/Excel2007/Chart.php @@ -962,7 +962,8 @@ class PHPExcel_Writer_Excel2007_Chart extends PHPExcel_Writer_Excel2007_WriterPa ($groupType != PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) && ($groupType != PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) { - if ($plotSeriesValues->getFormatCode() !== NULL) { + if (($plotSeriesValues->getFormatCode() !== NULL) && + ($plotSeriesValues->getFormatCode() !== '')) { $objWriter->startElement('c:formatCode'); $objWriter->writeRawData( $plotSeriesValues->getFormatCode() ); $objWriter->endElement(); diff --git a/Tests/33chartcreate.php b/Tests/33chartcreate.php index f688b01..47aab30 100644 --- a/Tests/33chartcreate.php +++ b/Tests/33chartcreate.php @@ -28,7 +28,7 @@ date_default_timezone_set('Europe/London'); * @package PHPExcel * @copyright Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel) * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version 1.7.7, 2012-05-19 + * @version ##VERSION##, ##DATE## */ /** Include path **/ diff --git a/Tests/34chartupdate.php b/Tests/34chartupdate.php new file mode 100644 index 0000000..79b509f --- /dev/null +++ b/Tests/34chartupdate.php @@ -0,0 +1,75 @@ +setIncludeCharts(TRUE); +$objPHPExcel = $objReader->load("33chartcreate.xlsx"); + + +echo date('H:i:s') , " Update cell data values that are displayed in the chart" , PHP_EOL; +$objWorksheet = $objPHPExcel->getActiveSheet(); +$objWorksheet->fromArray( + array( + array(50-12, 50-15, 50-21), + array(50-56, 50-73, 50-86), + array(50-52, 50-61, 50-69), + array(50-30, 50-32, 50), + ), + NULL, + 'B2' +); + +// Save Excel 2007 file +echo date('H:i:s') , " Write to Excel2007 format" , PHP_EOL; +$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); +$objWriter->setIncludeCharts(TRUE); +$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); +echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', __FILE__) , PHP_EOL; + + +// Echo memory peak usage +echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , PHP_EOL; + +// Echo done +echo date('H:i:s') , " Done writing file" , PHP_EOL;