setDataType($dataType); $this->_dataSource = $dataSource; $this->_formatCode = $formatCode; $this->_pointCount = $pointCount; $this->_dataValues = $dataValues; $this->_marker = $marker; } /** * Get Series Data Type * * @return string */ public function getDataType() { return $this->_dataType; } /** * Set Series Data Type * * @param string $dataType Datatype of this data series * Typical values are: * PHPExcel_Chart_DataSeriesValues::DATASERIES_TYPE_STRING * Normally used for axis point values * PHPExcel_Chart_DataSeriesValues::DATASERIES_TYPE_NUMBER * Normally used for chart data values * @return PHPExcel_Chart_DataSeriesValues */ public function setDataType($dataType = self::DATASERIES_TYPE_NUMBER) { if (!in_array($dataType, self::$_dataTypeValues)) { throw new PHPExcel_Chart_Exception('Invalid datatype for chart data series values'); } $this->_dataType = $dataType; return $this; } /** * Get Series Data Source (formula) * * @return string */ public function getDataSource() { return $this->_dataSource; } /** * Set Series Data Source (formula) * * @param string $dataSource * @return PHPExcel_Chart_DataSeriesValues */ public function setDataSource($dataSource = null, $refreshDataValues = true) { $this->_dataSource = $dataSource; if ($refreshDataValues) { // TO DO } return $this; } /** * Get Point Marker * * @return string */ public function getPointMarker() { return $this->_marker; } /** * Set Point Marker * * @param string $marker * @return PHPExcel_Chart_DataSeriesValues */ public function setPointMarker($marker = null) { $this->_marker = $marker; return $this; } /** * Get Series Format Code * * @return string */ public function getFormatCode() { return $this->_formatCode; } /** * Set Series Format Code * * @param string $formatCode * @return PHPExcel_Chart_DataSeriesValues */ public function setFormatCode($formatCode = null) { $this->_formatCode = $formatCode; return $this; } /** * Get Series Point Count * * @return integer */ public function getPointCount() { return $this->_pointCount; } /** * Identify if the Data Series is a multi-level or a simple series * * @return boolean */ public function isMultiLevelSeries() { if (count($this->_dataValues) > 0) { return is_array($this->_dataValues[0]); } return null; } /** * Return the level count of a multi-level Data Series * * @return boolean */ public function multiLevelCount() { $levelCount = 0; foreach($this->_dataValues as $dataValueSet) { $levelCount = max($levelCount,count($dataValueSet)); } return $levelCount; } /** * Get Series Data Values * * @return array of mixed */ public function getDataValues() { return $this->_dataValues; } /** * Get the first Series Data value * * @return mixed */ public function getDataValue() { $count = count($this->_dataValues); if ($count == 0) { return null; } elseif ($count == 1) { return $this->_dataValues[0]; } return $this->_dataValues; } /** * Set Series Data Values * * @param array $dataValues * @param boolean $refreshDataSource * TRUE - refresh the value of _dataSource based on the values of $dataValues * FALSE - don't change the value of _dataSource * @return PHPExcel_Chart_DataSeriesValues */ public function setDataValues($dataValues = array(), $refreshDataSource = true) { $this->_dataValues = PHPExcel_Calculation_Functions::flattenArray($dataValues); $this->_pointCount = count($dataValues); if ($refreshDataSource) { // TO DO } return $this; } private function _stripNulls($var) { return $var !== NULL; } 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( '='.$this->_dataSource, NULL, $worksheet->getCell('A1') ) ); // 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); } } }