Overview

Packages

  • JAMA
  • None
  • PHP
  • PHPExcel
    • CachedObjectStorage
    • Calculation
    • Cell
    • Chart
      • Renderer
    • Reader
      • Excel2007
      • Excel5
    • RichText
    • Settings
    • Shared
      • Escher
      • OLE
      • Trend
      • ZipArchive
    • Style
    • Worksheet
      • Drawing
    • Writer
      • 2007
      • CSV
      • Excel2007
      • Excel5
      • HTML
      • PDF

Classes

  • CholeskyDecomposition
  • Dao
  • DateTime
  • DateTimeZone
  • DOMNode
  • EigenvalueDecomposition
  • Elemento
  • Historial
  • Irradiacion
  • Latitud
  • MotorPhp
  • Panel
  • PclZip
  • Periodo
  • PHPExcel
  • PHPExcel_Autoloader
  • PHPExcel_Best_Fit
  • PHPExcel_CachedObjectStorage_APC
  • PHPExcel_CachedObjectStorage_CacheBase
  • PHPExcel_CachedObjectStorage_DiscISAM
  • PHPExcel_CachedObjectStorage_Igbinary
  • PHPExcel_CachedObjectStorage_Memcache
  • PHPExcel_CachedObjectStorage_Memory
  • PHPExcel_CachedObjectStorage_MemoryGZip
  • PHPExcel_CachedObjectStorage_MemorySerialized
  • PHPExcel_CachedObjectStorage_PHPTemp
  • PHPExcel_CachedObjectStorage_SQLite
  • PHPExcel_CachedObjectStorage_SQLite3
  • PHPExcel_CachedObjectStorage_Wincache
  • PHPExcel_CachedObjectStorageFactory
  • PHPExcel_CalcEngine_CyclicReferenceStack
  • PHPExcel_CalcEngine_Logger
  • PHPExcel_Calculation
  • PHPExcel_Calculation_Database
  • PHPExcel_Calculation_DateTime
  • PHPExcel_Calculation_Engineering
  • PHPExcel_Calculation_ExceptionHandler
  • PHPExcel_Calculation_Financial
  • PHPExcel_Calculation_FormulaParser
  • PHPExcel_Calculation_FormulaToken
  • PHPExcel_Calculation_Function
  • PHPExcel_Calculation_Functions
  • PHPExcel_Calculation_Logical
  • PHPExcel_Calculation_LookupRef
  • PHPExcel_Calculation_MathTrig
  • PHPExcel_Calculation_Statistical
  • PHPExcel_Calculation_TextData
  • PHPExcel_Calculation_Token_Stack
  • PHPExcel_Cell
  • PHPExcel_Cell_AdvancedValueBinder
  • PHPExcel_Cell_DataType
  • PHPExcel_Cell_DataValidation
  • PHPExcel_Cell_DefaultValueBinder
  • PHPExcel_Cell_Hyperlink
  • PHPExcel_Chart
  • PHPExcel_Chart_DataSeries
  • PHPExcel_Chart_DataSeriesValues
  • PHPExcel_Chart_Layout
  • PHPExcel_Chart_Legend
  • PHPExcel_Chart_PlotArea
  • PHPExcel_Chart_Renderer_jpgraph
  • PHPExcel_Chart_Title
  • PHPExcel_Comment
  • PHPExcel_DocumentProperties
  • PHPExcel_DocumentSecurity
  • PHPExcel_Exponential_Best_Fit
  • PHPExcel_HashTable
  • PHPExcel_IOFactory
  • PHPExcel_Linear_Best_Fit
  • PHPExcel_Logarithmic_Best_Fit
  • PHPExcel_NamedRange
  • PHPExcel_Polynomial_Best_Fit
  • PHPExcel_Power_Best_Fit
  • PHPExcel_Reader_Abstract
  • PHPExcel_Reader_CSV
  • PHPExcel_Reader_DefaultReadFilter
  • PHPExcel_Reader_Excel2003XML
  • PHPExcel_Reader_Excel2007
  • PHPExcel_Reader_Excel2007_Chart
  • PHPExcel_Reader_Excel2007_Theme
  • PHPExcel_Reader_Excel5
  • PHPExcel_Reader_Excel5_Escher
  • PHPExcel_Reader_Excel5_MD5
  • PHPExcel_Reader_Excel5_RC4
  • PHPExcel_Reader_Gnumeric
  • PHPExcel_Reader_HTML
  • PHPExcel_Reader_OOCalc
  • PHPExcel_Reader_SYLK
  • PHPExcel_ReferenceHelper
  • PHPExcel_RichText
  • PHPExcel_RichText_Run
  • PHPExcel_RichText_TextElement
  • PHPExcel_Settings
  • PHPExcel_Shared_CodePage
  • PHPExcel_Shared_Date
  • PHPExcel_Shared_Drawing
  • PHPExcel_Shared_Escher
  • PHPExcel_Shared_Escher_DgContainer
  • PHPExcel_Shared_Escher_DgContainer_SpgrContainer
  • PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer
  • PHPExcel_Shared_Escher_DggContainer
  • PHPExcel_Shared_Escher_DggContainer_BstoreContainer
  • PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE
  • PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip
  • PHPExcel_Shared_Excel5
  • PHPExcel_Shared_File
  • PHPExcel_Shared_Font
  • PHPExcel_Shared_JAMA_LUDecomposition
  • PHPExcel_Shared_JAMA_Matrix
  • PHPExcel_Shared_JAMA_QRDecomposition
  • PHPExcel_Shared_OLE
  • PHPExcel_Shared_OLE_ChainedBlockStream
  • PHPExcel_Shared_OLE_PPS
  • PHPExcel_Shared_OLE_PPS_File
  • PHPExcel_Shared_OLE_PPS_Root
  • PHPExcel_Shared_OLERead
  • PHPExcel_Shared_PasswordHasher
  • PHPExcel_Shared_String
  • PHPExcel_Shared_TimeZone
  • PHPExcel_Shared_XMLWriter
  • PHPExcel_Shared_ZipArchive
  • PHPExcel_Shared_ZipStreamWrapper
  • PHPExcel_Style
  • PHPExcel_Style_Alignment
  • PHPExcel_Style_Border
  • PHPExcel_Style_Borders
  • PHPExcel_Style_Color
  • PHPExcel_Style_Conditional
  • PHPExcel_Style_Fill
  • PHPExcel_Style_Font
  • PHPExcel_Style_NumberFormat
  • PHPExcel_Style_Protection
  • PHPExcel_Style_Supervisor
  • PHPExcel_Worksheet
  • PHPExcel_Worksheet_AutoFilter
  • PHPExcel_Worksheet_AutoFilter_Column
  • PHPExcel_Worksheet_AutoFilter_Column_Rule
  • PHPExcel_Worksheet_BaseDrawing
  • PHPExcel_Worksheet_CellIterator
  • PHPExcel_Worksheet_ColumnDimension
  • PHPExcel_Worksheet_Drawing
  • PHPExcel_Worksheet_Drawing_Shadow
  • PHPExcel_Worksheet_HeaderFooter
  • PHPExcel_Worksheet_HeaderFooterDrawing
  • PHPExcel_Worksheet_MemoryDrawing
  • PHPExcel_Worksheet_PageMargins
  • PHPExcel_Worksheet_PageSetup
  • PHPExcel_Worksheet_Protection
  • PHPExcel_Worksheet_Row
  • PHPExcel_Worksheet_RowDimension
  • PHPExcel_Worksheet_RowIterator
  • PHPExcel_Worksheet_SheetView
  • PHPExcel_WorksheetIterator
  • PHPExcel_Writer_Abstract
  • PHPExcel_Writer_CSV
  • PHPExcel_Writer_Excel2007
  • PHPExcel_Writer_Excel2007_Chart
  • PHPExcel_Writer_Excel2007_Comments
  • PHPExcel_Writer_Excel2007_ContentTypes
  • PHPExcel_Writer_Excel2007_DocProps
  • PHPExcel_Writer_Excel2007_Drawing
  • PHPExcel_Writer_Excel2007_Rels
  • PHPExcel_Writer_Excel2007_RelsRibbon
  • PHPExcel_Writer_Excel2007_RelsVBA
  • PHPExcel_Writer_Excel2007_StringTable
  • PHPExcel_Writer_Excel2007_Style
  • PHPExcel_Writer_Excel2007_Theme
  • PHPExcel_Writer_Excel2007_Workbook
  • PHPExcel_Writer_Excel2007_Worksheet
  • PHPExcel_Writer_Excel2007_WriterPart
  • PHPExcel_Writer_Excel5
  • PHPExcel_Writer_Excel5_BIFFwriter
  • PHPExcel_Writer_Excel5_Escher
  • PHPExcel_Writer_Excel5_Font
  • PHPExcel_Writer_Excel5_Parser
  • PHPExcel_Writer_Excel5_Workbook
  • PHPExcel_Writer_Excel5_Worksheet
  • PHPExcel_Writer_Excel5_Xf
  • PHPExcel_Writer_HTML
  • PHPExcel_Writer_PDF
  • PHPExcel_Writer_PDF_Core
  • PHPExcel_Writer_PDF_DomPDF
  • PHPExcel_Writer_PDF_mPDF
  • PHPExcel_Writer_PDF_tcPDF
  • Provincia
  • Radiacion
  • SingularValueDecomposition
  • Sistema
  • trendClass
  • xajax
  • xajaxArgumentManager
  • xajaxCallableObject
  • xajaxCallableObjectPlugin
  • xajaxControl
  • xajaxControlContainer
  • xajaxCustomRequest
  • xajaxCustomResponse
  • xajaxEvent
  • xajaxEventPlugin
  • xajaxFunctionPlugin
  • xajaxIncludeClientScriptPlugin
  • xajaxLanguageManager
  • xajaxPlugin
  • xajaxPluginManager
  • xajaxRequest
  • xajaxRequestPlugin
  • xajaxResponse
  • xajaxResponseManager
  • xajaxResponsePlugin
  • xajaxScriptPlugin
  • xajaxUserFunction
  • XMLWriter

Interfaces

  • DateTimeInterface
  • Iterator
  • PHPExcel_CachedObjectStorage_ICache
  • PHPExcel_Cell_IValueBinder
  • PHPExcel_IComparable
  • PHPExcel_Reader_IReader
  • PHPExcel_Reader_IReadFilter
  • PHPExcel_RichText_ITextElement
  • PHPExcel_Writer_IWriter
  • Throwable
  • Traversable

Exceptions

  • Exception
  • PHPExcel_Calculation_Exception
  • PHPExcel_Chart_Exception
  • PHPExcel_Exception
  • PHPExcel_Reader_Exception
  • PHPExcel_Writer_Exception

Functions

  • acosh
  • agregar_elemento
  • asinh
  • atanh
  • borrar_elementos
  • borrar_gdm_ab
  • borrar_irradiacion
  • borrar_latitud
  • borrar_panel
  • borrar_periodo
  • borrar_pmp_min_pmp_max
  • borrar_radiacion
  • borrar_resumen
  • borrar_sistema
  • borrar_sombra
  • gdm_ab
  • grabar_resumen
  • historial
  • hypo
  • irradiacion
  • JAMAError
  • latitud
  • limpiar_historial
  • login
  • mb_str_replace
  • mostrar_energia_total_ch
  • mostrar_panel_md_th
  • mostrar_panel_th
  • mostrar_radiacion_md_th
  • mostrar_radiacion_th
  • mostrar_resumen_th
  • panel
  • PclZipUtilCopyBlock
  • PclZipUtilOptionText
  • PclZipUtilPathInclusion
  • PclZipUtilPathReduction
  • PclZipUtilRename
  • PclZipUtilTranslateWinPath
  • periodo
  • pmp_min_pmp_max
  • preparar_panel
  • preparar_radiacion
  • preparar_radiacion_media
  • radiacion
  • resumen
  • sistema
  • sombra
  • xajaxCompressFile
  • xajaxErrorHandler
  • Overview
  • Package
  • Class
  • Tree
  • Deprecated
  • Todo
  • Download
   1: <?php
   2: /**
   3:  * PHPExcel
   4:  *
   5:  * Copyright (c) 2006 - 2014 PHPExcel
   6:  *
   7:  * This library is free software; you can redistribute it and/or
   8:  * modify it under the terms of the GNU Lesser General Public
   9:  * License as published by the Free Software Foundation; either
  10:  * version 2.1 of the License, or (at your option) any later version.
  11:  *
  12:  * This library is distributed in the hope that it will be useful,
  13:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15:  * Lesser General Public License for more details.
  16:  *
  17:  * You should have received a copy of the GNU Lesser General Public
  18:  * License along with this library; if not, write to the Free Software
  19:  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  20:  *
  21:  * @category   PHPExcel
  22:  * @package    PHPExcel_Writer_Excel2007
  23:  * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
  24:  * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
  25:  * @version    1.8.0, 2014-03-02
  26:  */
  27: 
  28: 
  29: /**
  30:  * PHPExcel_Writer_Excel2007_Chart
  31:  *
  32:  * @category   PHPExcel
  33:  * @package    PHPExcel_Writer_Excel2007
  34:  * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
  35:  */
  36: class PHPExcel_Writer_Excel2007_Chart extends PHPExcel_Writer_Excel2007_WriterPart
  37: {
  38:     /**
  39:      * Write charts to XML format
  40:      *
  41:      * @param   PHPExcel_Chart              $pChart
  42:      * @return  string                      XML Output
  43:      * @throws  PHPExcel_Writer_Exception
  44:      */
  45:     public function writeChart(PHPExcel_Chart $pChart = null)
  46:     {
  47:         // Create XML writer
  48:         $objWriter = null;
  49:         if ($this->getParentWriter()->getUseDiskCaching()) {
  50:             $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
  51:         } else {
  52:             $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
  53:         }
  54:         //  Ensure that data series values are up-to-date before we save
  55:         $pChart->refresh();
  56: 
  57:         // XML header
  58:         $objWriter->startDocument('1.0','UTF-8','yes');
  59: 
  60:         // c:chartSpace
  61:         $objWriter->startElement('c:chartSpace');
  62:             $objWriter->writeAttribute('xmlns:c', 'http://schemas.openxmlformats.org/drawingml/2006/chart');
  63:             $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
  64:             $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
  65: 
  66:             $objWriter->startElement('c:date1904');
  67:                 $objWriter->writeAttribute('val', 0);
  68:             $objWriter->endElement();
  69:             $objWriter->startElement('c:lang');
  70:                 $objWriter->writeAttribute('val', "en-GB");
  71:             $objWriter->endElement();
  72:             $objWriter->startElement('c:roundedCorners');
  73:                 $objWriter->writeAttribute('val', 0);
  74:             $objWriter->endElement();
  75: 
  76:             $this->_writeAlternateContent($objWriter);
  77: 
  78:             $objWriter->startElement('c:chart');
  79: 
  80:                 $this->_writeTitle($pChart->getTitle(), $objWriter);
  81: 
  82:                 $objWriter->startElement('c:autoTitleDeleted');
  83:                     $objWriter->writeAttribute('val', 0);
  84:                 $objWriter->endElement();
  85: 
  86:                 $this->_writePlotArea($pChart->getPlotArea(),
  87:                                       $pChart->getXAxisLabel(),
  88:                                       $pChart->getYAxisLabel(),
  89:                                       $objWriter,
  90:                                       $pChart->getWorksheet()
  91:                                      );
  92: 
  93:                 $this->_writeLegend($pChart->getLegend(), $objWriter);
  94: 
  95: 
  96:                 $objWriter->startElement('c:plotVisOnly');
  97:                     $objWriter->writeAttribute('val', 1);
  98:                 $objWriter->endElement();
  99: 
 100:                 $objWriter->startElement('c:dispBlanksAs');
 101:                     $objWriter->writeAttribute('val', "gap");
 102:                 $objWriter->endElement();
 103: 
 104:                 $objWriter->startElement('c:showDLblsOverMax');
 105:                     $objWriter->writeAttribute('val', 0);
 106:                 $objWriter->endElement();
 107: 
 108:             $objWriter->endElement();
 109: 
 110:             $this->_writePrintSettings($objWriter);
 111: 
 112:         $objWriter->endElement();
 113: 
 114:         // Return
 115:         return $objWriter->getData();
 116:     }
 117: 
 118:     /**
 119:      * Write Chart Title
 120:      *
 121:      * @param   PHPExcel_Chart_Title        $title
 122:      * @param   PHPExcel_Shared_XMLWriter   $objWriter      XML Writer
 123:      * @throws  PHPExcel_Writer_Exception
 124:      */
 125:     private function _writeTitle(PHPExcel_Chart_Title $title = null, $objWriter)
 126:     {
 127:         if (is_null($title)) {
 128:             return;
 129:         }
 130: 
 131:         $objWriter->startElement('c:title');
 132:             $objWriter->startElement('c:tx');
 133:                 $objWriter->startElement('c:rich');
 134: 
 135:                     $objWriter->startElement('a:bodyPr');
 136:                     $objWriter->endElement();
 137: 
 138:                     $objWriter->startElement('a:lstStyle');
 139:                     $objWriter->endElement();
 140: 
 141:                     $objWriter->startElement('a:p');
 142: 
 143:                         $caption = $title->getCaption();
 144:                         if ((is_array($caption)) && (count($caption) > 0))
 145:                             $caption = $caption[0];
 146:                         $this->getParentWriter()->getWriterPart('stringtable')->writeRichTextForCharts($objWriter, $caption, 'a');
 147: 
 148:                     $objWriter->endElement();
 149:                 $objWriter->endElement();
 150:             $objWriter->endElement();
 151: 
 152:             $layout = $title->getLayout();
 153:             $this->_writeLayout($layout, $objWriter);
 154: 
 155:             $objWriter->startElement('c:overlay');
 156:                 $objWriter->writeAttribute('val', 0);
 157:             $objWriter->endElement();
 158: 
 159:         $objWriter->endElement();
 160:     }
 161: 
 162:     /**
 163:      * Write Chart Legend
 164:      *
 165:      * @param   PHPExcel_Chart_Legend       $legend
 166:      * @param   PHPExcel_Shared_XMLWriter   $objWriter      XML Writer
 167:      * @throws  PHPExcel_Writer_Exception
 168:      */
 169:     private function _writeLegend(PHPExcel_Chart_Legend $legend = null, $objWriter)
 170:     {
 171:         if (is_null($legend)) {
 172:             return;
 173:         }
 174: 
 175:         $objWriter->startElement('c:legend');
 176: 
 177:             $objWriter->startElement('c:legendPos');
 178:                 $objWriter->writeAttribute('val', $legend->getPosition());
 179:             $objWriter->endElement();
 180: 
 181:             $layout = $legend->getLayout();
 182:             $this->_writeLayout($layout, $objWriter);
 183: 
 184:             $objWriter->startElement('c:overlay');
 185:                 $objWriter->writeAttribute('val', ($legend->getOverlay()) ? '1' : '0');
 186:             $objWriter->endElement();
 187: 
 188:             $objWriter->startElement('c:txPr');
 189:                 $objWriter->startElement('a:bodyPr');
 190:                 $objWriter->endElement();
 191: 
 192:                 $objWriter->startElement('a:lstStyle');
 193:                 $objWriter->endElement();
 194: 
 195:                 $objWriter->startElement('a:p');
 196:                     $objWriter->startElement('a:pPr');
 197:                         $objWriter->writeAttribute('rtl', 0);
 198: 
 199:                         $objWriter->startElement('a:defRPr');
 200:                         $objWriter->endElement();
 201:                     $objWriter->endElement();
 202: 
 203:                     $objWriter->startElement('a:endParaRPr');
 204:                         $objWriter->writeAttribute('lang', "en-US");
 205:                     $objWriter->endElement();
 206: 
 207:                 $objWriter->endElement();
 208:             $objWriter->endElement();
 209: 
 210:         $objWriter->endElement();
 211:     }
 212: 
 213:     /**
 214:      * Write Chart Plot Area
 215:      *
 216:      * @param   PHPExcel_Chart_PlotArea     $plotArea
 217:      * @param   PHPExcel_Chart_Title        $xAxisLabel
 218:      * @param   PHPExcel_Chart_Title        $yAxisLabel
 219:      * @param   PHPExcel_Shared_XMLWriter   $objWriter      XML Writer
 220:      * @throws  PHPExcel_Writer_Exception
 221:      */
 222:     private function _writePlotArea(PHPExcel_Chart_PlotArea $plotArea,
 223:                                     PHPExcel_Chart_Title $xAxisLabel = NULL,
 224:                                     PHPExcel_Chart_Title $yAxisLabel = NULL,
 225:                                     $objWriter,
 226:                                     PHPExcel_Worksheet $pSheet)
 227:     {
 228:         if (is_null($plotArea)) {
 229:             return;
 230:         }
 231: 
 232:         $id1 = $id2 = 0;
 233:         $this->_seriesIndex = 0;
 234:         $objWriter->startElement('c:plotArea');
 235: 
 236:             $layout = $plotArea->getLayout();
 237: 
 238:             $this->_writeLayout($layout, $objWriter);
 239: 
 240:             $chartTypes = self::_getChartType($plotArea);
 241:             $catIsMultiLevelSeries = $valIsMultiLevelSeries = FALSE;
 242:             $plotGroupingType = '';
 243:             foreach($chartTypes as $chartType) {
 244:                 $objWriter->startElement('c:'.$chartType);
 245: 
 246:                     $groupCount = $plotArea->getPlotGroupCount();
 247:                     for($i = 0; $i < $groupCount; ++$i) {
 248:                         $plotGroup = $plotArea->getPlotGroupByIndex($i);
 249:                         $groupType = $plotGroup->getPlotType();
 250:                         if ($groupType == $chartType) {
 251: 
 252:                             $plotStyle = $plotGroup->getPlotStyle();
 253:                             if ($groupType === PHPExcel_Chart_DataSeries::TYPE_RADARCHART) {
 254:                                 $objWriter->startElement('c:radarStyle');
 255:                                     $objWriter->writeAttribute('val', $plotStyle );
 256:                                 $objWriter->endElement();
 257:                             } elseif ($groupType === PHPExcel_Chart_DataSeries::TYPE_SCATTERCHART) {
 258:                                 $objWriter->startElement('c:scatterStyle');
 259:                                     $objWriter->writeAttribute('val', $plotStyle );
 260:                                 $objWriter->endElement();
 261:                             }
 262: 
 263:                             $this->_writePlotGroup($plotGroup, $chartType, $objWriter, $catIsMultiLevelSeries, $valIsMultiLevelSeries, $plotGroupingType, $pSheet);
 264:                         }
 265:                     }
 266: 
 267:                     $this->_writeDataLbls($objWriter, $layout);
 268: 
 269:                     if ($chartType === PHPExcel_Chart_DataSeries::TYPE_LINECHART) {
 270:                         //  Line only, Line3D can't be smoothed
 271: 
 272:                         $objWriter->startElement('c:smooth');
 273:                             $objWriter->writeAttribute('val', (integer) $plotGroup->getSmoothLine() );
 274:                         $objWriter->endElement();
 275:                     } elseif (($chartType === PHPExcel_Chart_DataSeries::TYPE_BARCHART) ||
 276:                         ($chartType === PHPExcel_Chart_DataSeries::TYPE_BARCHART_3D)) {
 277: 
 278:                         $objWriter->startElement('c:gapWidth');
 279:                             $objWriter->writeAttribute('val', 150 );
 280:                         $objWriter->endElement();
 281: 
 282:                         if ($plotGroupingType == 'percentStacked' ||
 283:                             $plotGroupingType == 'stacked') {
 284: 
 285:                             $objWriter->startElement('c:overlap');
 286:                                 $objWriter->writeAttribute('val', 100 );
 287:                             $objWriter->endElement();
 288:                         }
 289:                     } elseif ($chartType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) {
 290: 
 291:                             $objWriter->startElement('c:bubbleScale');
 292:                                 $objWriter->writeAttribute('val', 25 );
 293:                             $objWriter->endElement();
 294: 
 295:                             $objWriter->startElement('c:showNegBubbles');
 296:                                 $objWriter->writeAttribute('val', 0 );
 297:                             $objWriter->endElement();
 298:                     } elseif ($chartType === PHPExcel_Chart_DataSeries::TYPE_STOCKCHART) {
 299: 
 300:                             $objWriter->startElement('c:hiLowLines');
 301:                             $objWriter->endElement();
 302: 
 303:                             $objWriter->startElement( 'c:upDownBars' );
 304: 
 305:                             $objWriter->startElement( 'c:gapWidth' );
 306:                             $objWriter->writeAttribute('val', 300);
 307:                             $objWriter->endElement();
 308: 
 309:                             $objWriter->startElement( 'c:upBars' );
 310:                             $objWriter->endElement();
 311: 
 312:                             $objWriter->startElement( 'c:downBars' );
 313:                             $objWriter->endElement();
 314: 
 315:                             $objWriter->endElement();
 316:                     }
 317: 
 318:                     //  Generate 2 unique numbers to use for axId values
 319: //                  $id1 = $id2 = rand(10000000,99999999);
 320: //                  do {
 321: //                      $id2 = rand(10000000,99999999);
 322: //                  } while ($id1 == $id2);
 323:                     $id1 = '75091328';
 324:                     $id2 = '75089408';
 325: 
 326:                     if (($chartType !== PHPExcel_Chart_DataSeries::TYPE_PIECHART) &&
 327:                         ($chartType !== PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) &&
 328:                         ($chartType !== PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) {
 329: 
 330:                         $objWriter->startElement('c:axId');
 331:                             $objWriter->writeAttribute('val', $id1 );
 332:                         $objWriter->endElement();
 333:                         $objWriter->startElement('c:axId');
 334:                             $objWriter->writeAttribute('val', $id2 );
 335:                         $objWriter->endElement();
 336:                     } else {
 337:                         $objWriter->startElement('c:firstSliceAng');
 338:                             $objWriter->writeAttribute('val', 0);
 339:                         $objWriter->endElement();
 340: 
 341:                         if ($chartType === PHPExcel_Chart_DataSeries::TYPE_DONUTCHART) {
 342: 
 343:                             $objWriter->startElement('c:holeSize');
 344:                                 $objWriter->writeAttribute('val', 50);
 345:                             $objWriter->endElement();
 346:                         }
 347:                     }
 348: 
 349:                 $objWriter->endElement();
 350:             }
 351: 
 352:             if (($chartType !== PHPExcel_Chart_DataSeries::TYPE_PIECHART) &&
 353:                 ($chartType !== PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) &&
 354:                 ($chartType !== PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) {
 355: 
 356:                 if ($chartType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) {
 357:                     $this->_writeValAx($objWriter,$plotArea,$xAxisLabel,$chartType,$id1,$id2,$catIsMultiLevelSeries);
 358:                 } else {
 359:                     $this->_writeCatAx($objWriter,$plotArea,$xAxisLabel,$chartType,$id1,$id2,$catIsMultiLevelSeries);
 360:                 }
 361: 
 362:                 $this->_writeValAx($objWriter,$plotArea,$yAxisLabel,$chartType,$id1,$id2,$valIsMultiLevelSeries);
 363:             }
 364: 
 365:         $objWriter->endElement();
 366:     }
 367: 
 368:     /**
 369:      * Write Data Labels
 370:      *
 371:      * @param   PHPExcel_Shared_XMLWriter   $objWriter      XML Writer
 372:      * @param   PHPExcel_Chart_Layout       $chartLayout    Chart layout
 373:      * @throws  PHPExcel_Writer_Exception
 374:      */
 375:     private function _writeDataLbls($objWriter, $chartLayout)
 376:     {
 377:         $objWriter->startElement('c:dLbls');
 378: 
 379:             $objWriter->startElement('c:showLegendKey');
 380:                 $showLegendKey = (empty($chartLayout)) ? 0 : $chartLayout->getShowLegendKey();
 381:                 $objWriter->writeAttribute('val', ((empty($showLegendKey)) ? 0 : 1) );
 382:             $objWriter->endElement();
 383: 
 384: 
 385:             $objWriter->startElement('c:showVal');
 386:                 $showVal = (empty($chartLayout)) ? 0 : $chartLayout->getShowVal();
 387:                 $objWriter->writeAttribute('val', ((empty($showVal)) ? 0 : 1) );
 388:             $objWriter->endElement();
 389: 
 390:             $objWriter->startElement('c:showCatName');
 391:                 $showCatName = (empty($chartLayout)) ? 0 : $chartLayout->getShowCatName();
 392:                 $objWriter->writeAttribute('val', ((empty($showCatName)) ? 0 : 1) );
 393:             $objWriter->endElement();
 394: 
 395:             $objWriter->startElement('c:showSerName');
 396:                 $showSerName = (empty($chartLayout)) ? 0 : $chartLayout->getShowSerName();
 397:                 $objWriter->writeAttribute('val', ((empty($showSerName)) ? 0 : 1) );
 398:             $objWriter->endElement();
 399: 
 400:             $objWriter->startElement('c:showPercent');
 401:                 $showPercent = (empty($chartLayout)) ? 0 : $chartLayout->getShowPercent();
 402:                 $objWriter->writeAttribute('val', ((empty($showPercent)) ? 0 : 1) );
 403:             $objWriter->endElement();
 404: 
 405:             $objWriter->startElement('c:showBubbleSize');
 406:                 $showBubbleSize = (empty($chartLayout)) ? 0 : $chartLayout->getShowBubbleSize();
 407:                 $objWriter->writeAttribute('val', ((empty($showBubbleSize)) ? 0 : 1) );
 408:             $objWriter->endElement();
 409: 
 410:             $objWriter->startElement('c:showLeaderLines');
 411:                 $showLeaderLines = (empty($chartLayout)) ? 1 : $chartLayout->getShowLeaderLines();
 412:                 $objWriter->writeAttribute('val', ((empty($showLeaderLines)) ? 0 : 1) );
 413:             $objWriter->endElement();
 414: 
 415:         $objWriter->endElement();
 416:     }
 417: 
 418:     /**
 419:      * Write Category Axis
 420:      *
 421:      * @param   PHPExcel_Shared_XMLWriter   $objWriter      XML Writer
 422:      * @param   PHPExcel_Chart_PlotArea     $plotArea
 423:      * @param   PHPExcel_Chart_Title        $xAxisLabel
 424:      * @param   string                      $groupType      Chart type
 425:      * @param   string                      $id1
 426:      * @param   string                      $id2
 427:      * @param   boolean                     $isMultiLevelSeries
 428:      * @throws  PHPExcel_Writer_Exception
 429:      */
 430:     private function _writeCatAx($objWriter, PHPExcel_Chart_PlotArea $plotArea, $xAxisLabel, $groupType, $id1, $id2, $isMultiLevelSeries)
 431:     {
 432:         $objWriter->startElement('c:catAx');
 433: 
 434:             if ($id1 > 0) {
 435:                 $objWriter->startElement('c:axId');
 436:                     $objWriter->writeAttribute('val', $id1);
 437:                 $objWriter->endElement();
 438:             }
 439: 
 440:             $objWriter->startElement('c:scaling');
 441:                 $objWriter->startElement('c:orientation');
 442:                     $objWriter->writeAttribute('val', "minMax");
 443:                 $objWriter->endElement();
 444:             $objWriter->endElement();
 445: 
 446:             $objWriter->startElement('c:delete');
 447:                 $objWriter->writeAttribute('val', 0);
 448:             $objWriter->endElement();
 449: 
 450:             $objWriter->startElement('c:axPos');
 451:                 $objWriter->writeAttribute('val', "b");
 452:             $objWriter->endElement();
 453: 
 454:             if (!is_null($xAxisLabel)) {
 455:                 $objWriter->startElement('c:title');
 456:                     $objWriter->startElement('c:tx');
 457:                         $objWriter->startElement('c:rich');
 458: 
 459:                             $objWriter->startElement('a:bodyPr');
 460:                             $objWriter->endElement();
 461: 
 462:                             $objWriter->startElement('a:lstStyle');
 463:                             $objWriter->endElement();
 464: 
 465:                             $objWriter->startElement('a:p');
 466:                                 $objWriter->startElement('a:r');
 467: 
 468:                                     $caption = $xAxisLabel->getCaption();
 469:                                     if (is_array($caption))
 470:                                         $caption = $caption[0];
 471:                                     $objWriter->startElement('a:t');
 472: //                                      $objWriter->writeAttribute('xml:space', 'preserve');
 473:                                         $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML( $caption ));
 474:                                     $objWriter->endElement();
 475: 
 476:                                 $objWriter->endElement();
 477:                             $objWriter->endElement();
 478:                         $objWriter->endElement();
 479:                     $objWriter->endElement();
 480: 
 481:                     $layout = $xAxisLabel->getLayout();
 482:                     $this->_writeLayout($layout, $objWriter);
 483: 
 484:                     $objWriter->startElement('c:overlay');
 485:                         $objWriter->writeAttribute('val', 0);
 486:                     $objWriter->endElement();
 487: 
 488:                 $objWriter->endElement();
 489: 
 490:             }
 491: 
 492:             $objWriter->startElement('c:numFmt');
 493:                 $objWriter->writeAttribute('formatCode', "General");
 494:                 $objWriter->writeAttribute('sourceLinked', 1);
 495:             $objWriter->endElement();
 496: 
 497:             $objWriter->startElement('c:majorTickMark');
 498:                 $objWriter->writeAttribute('val', "out");
 499:             $objWriter->endElement();
 500: 
 501:             $objWriter->startElement('c:minorTickMark');
 502:                 $objWriter->writeAttribute('val', "none");
 503:             $objWriter->endElement();
 504: 
 505:             $objWriter->startElement('c:tickLblPos');
 506:                 $objWriter->writeAttribute('val', "nextTo");
 507:             $objWriter->endElement();
 508: 
 509:             if ($id2 > 0) {
 510:                     $objWriter->startElement('c:crossAx');
 511:                         $objWriter->writeAttribute('val', $id2);
 512:                     $objWriter->endElement();
 513: 
 514:                     $objWriter->startElement('c:crosses');
 515:                         $objWriter->writeAttribute('val', "autoZero");
 516:                     $objWriter->endElement();
 517:             }
 518: 
 519:             $objWriter->startElement('c:auto');
 520:                 $objWriter->writeAttribute('val', 1);
 521:             $objWriter->endElement();
 522: 
 523:             $objWriter->startElement('c:lblAlgn');
 524:                 $objWriter->writeAttribute('val', "ctr");
 525:             $objWriter->endElement();
 526: 
 527:             $objWriter->startElement('c:lblOffset');
 528:                 $objWriter->writeAttribute('val', 100);
 529:             $objWriter->endElement();
 530: 
 531:             if ($isMultiLevelSeries) {
 532:                 $objWriter->startElement('c:noMultiLvlLbl');
 533:                     $objWriter->writeAttribute('val', 0);
 534:                 $objWriter->endElement();
 535:             }
 536:         $objWriter->endElement();
 537: 
 538:     }
 539: 
 540: 
 541:     /**
 542:      * Write Value Axis
 543:      *
 544:      * @param   PHPExcel_Shared_XMLWriter   $objWriter      XML Writer
 545:      * @param   PHPExcel_Chart_PlotArea     $plotArea
 546:      * @param   PHPExcel_Chart_Title        $yAxisLabel
 547:      * @param   string                      $groupType      Chart type
 548:      * @param   string                      $id1
 549:      * @param   string                      $id2
 550:      * @param   boolean                     $isMultiLevelSeries
 551:      * @throws  PHPExcel_Writer_Exception
 552:      */
 553:     private function _writeValAx($objWriter, PHPExcel_Chart_PlotArea $plotArea, $yAxisLabel, $groupType, $id1, $id2, $isMultiLevelSeries)
 554:     {
 555:         $objWriter->startElement('c:valAx');
 556: 
 557:             if ($id2 > 0) {
 558:                 $objWriter->startElement('c:axId');
 559:                     $objWriter->writeAttribute('val', $id2);
 560:                 $objWriter->endElement();
 561:             }
 562: 
 563:             $objWriter->startElement('c:scaling');
 564:                 $objWriter->startElement('c:orientation');
 565:                     $objWriter->writeAttribute('val', "minMax");
 566:                 $objWriter->endElement();
 567:             $objWriter->endElement();
 568: 
 569:             $objWriter->startElement('c:delete');
 570:                 $objWriter->writeAttribute('val', 0);
 571:             $objWriter->endElement();
 572: 
 573:             $objWriter->startElement('c:axPos');
 574:                 $objWriter->writeAttribute('val', "l");
 575:             $objWriter->endElement();
 576: 
 577:             $objWriter->startElement('c:majorGridlines');
 578:             $objWriter->endElement();
 579: 
 580:             if (!is_null($yAxisLabel)) {
 581:                 $objWriter->startElement('c:title');
 582:                     $objWriter->startElement('c:tx');
 583:                         $objWriter->startElement('c:rich');
 584: 
 585:                             $objWriter->startElement('a:bodyPr');
 586:                             $objWriter->endElement();
 587: 
 588:                             $objWriter->startElement('a:lstStyle');
 589:                             $objWriter->endElement();
 590: 
 591:                             $objWriter->startElement('a:p');
 592:                                 $objWriter->startElement('a:r');
 593: 
 594:                                     $caption = $yAxisLabel->getCaption();
 595:                                     if (is_array($caption))
 596:                                         $caption = $caption[0];
 597:                                     $objWriter->startElement('a:t');
 598: //                                      $objWriter->writeAttribute('xml:space', 'preserve');
 599:                                         $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML( $caption ));
 600:                                     $objWriter->endElement();
 601: 
 602:                                 $objWriter->endElement();
 603:                             $objWriter->endElement();
 604:                         $objWriter->endElement();
 605:                     $objWriter->endElement();
 606: 
 607:                     if ($groupType !== PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) {
 608:                         $layout = $yAxisLabel->getLayout();
 609:                         $this->_writeLayout($layout, $objWriter);
 610:                     }
 611: 
 612:                     $objWriter->startElement('c:overlay');
 613:                         $objWriter->writeAttribute('val', 0);
 614:                     $objWriter->endElement();
 615: 
 616:                 $objWriter->endElement();
 617:             }
 618: 
 619:             $objWriter->startElement('c:numFmt');
 620:                 $objWriter->writeAttribute('formatCode', "General");
 621:                 $objWriter->writeAttribute('sourceLinked', 1);
 622:             $objWriter->endElement();
 623: 
 624:             $objWriter->startElement('c:majorTickMark');
 625:                 $objWriter->writeAttribute('val', "out");
 626:             $objWriter->endElement();
 627: 
 628:             $objWriter->startElement('c:minorTickMark');
 629:                 $objWriter->writeAttribute('val', "none");
 630:             $objWriter->endElement();
 631: 
 632:             $objWriter->startElement('c:tickLblPos');
 633:                 $objWriter->writeAttribute('val', "nextTo");
 634:             $objWriter->endElement();
 635: 
 636:             if ($id1 > 0) {
 637:                     $objWriter->startElement('c:crossAx');
 638:                         $objWriter->writeAttribute('val', $id2);
 639:                     $objWriter->endElement();
 640: 
 641:                     $objWriter->startElement('c:crosses');
 642:                         $objWriter->writeAttribute('val', "autoZero");
 643:                     $objWriter->endElement();
 644: 
 645:                     $objWriter->startElement('c:crossBetween');
 646:                         $objWriter->writeAttribute('val', "midCat");
 647:                     $objWriter->endElement();
 648:             }
 649: 
 650:             if ($isMultiLevelSeries) {
 651:                 if ($groupType !== PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) {
 652:                     $objWriter->startElement('c:noMultiLvlLbl');
 653:                         $objWriter->writeAttribute('val', 0);
 654:                     $objWriter->endElement();
 655:                 }
 656:             }
 657:         $objWriter->endElement();
 658: 
 659:     }
 660: 
 661: 
 662:     /**
 663:      * Get the data series type(s) for a chart plot series
 664:      *
 665:      * @param   PHPExcel_Chart_PlotArea     $plotArea
 666:      * @return  string|array
 667:      * @throws  PHPExcel_Writer_Exception
 668:      */
 669:     private static function _getChartType($plotArea)
 670:     {
 671:         $groupCount = $plotArea->getPlotGroupCount();
 672: 
 673:         if ($groupCount == 1) {
 674:             $chartType = array($plotArea->getPlotGroupByIndex(0)->getPlotType());
 675:         } else {
 676:             $chartTypes = array();
 677:             for($i = 0; $i < $groupCount; ++$i) {
 678:                 $chartTypes[] = $plotArea->getPlotGroupByIndex($i)->getPlotType();
 679:             }
 680:             $chartType = array_unique($chartTypes);
 681:             if (count($chartTypes) == 0) {
 682:                 throw new PHPExcel_Writer_Exception('Chart is not yet implemented');
 683:             }
 684:         }
 685: 
 686:         return $chartType;
 687:     }
 688: 
 689:     /**
 690:      * Write Plot Group (series of related plots)
 691:      *
 692:      * @param   PHPExcel_Chart_DataSeries       $plotGroup
 693:      * @param   string                          $groupType              Type of plot for dataseries
 694:      * @param   PHPExcel_Shared_XMLWriter       $objWriter              XML Writer
 695:      * @param   boolean                         &$catIsMultiLevelSeries Is category a multi-series category
 696:      * @param   boolean                         &$valIsMultiLevelSeries Is value set a multi-series set
 697:      * @param   string                          &$plotGroupingType      Type of grouping for multi-series values
 698:      * @param   PHPExcel_Worksheet              $pSheet
 699:      * @throws  PHPExcel_Writer_Exception
 700:      */
 701:     private function _writePlotGroup( $plotGroup,
 702:                                       $groupType,
 703:                                       $objWriter,
 704:                                       &$catIsMultiLevelSeries,
 705:                                       &$valIsMultiLevelSeries,
 706:                                       &$plotGroupingType,
 707:                                       PHPExcel_Worksheet $pSheet
 708:                                     )
 709:     {
 710:         if (is_null($plotGroup)) {
 711:             return;
 712:         }
 713: 
 714:         if (($groupType == PHPExcel_Chart_DataSeries::TYPE_BARCHART) ||
 715:             ($groupType == PHPExcel_Chart_DataSeries::TYPE_BARCHART_3D)) {
 716:             $objWriter->startElement('c:barDir');
 717:                 $objWriter->writeAttribute('val', $plotGroup->getPlotDirection());
 718:             $objWriter->endElement();
 719:         }
 720: 
 721:         if (!is_null($plotGroup->getPlotGrouping())) {
 722:             $plotGroupingType = $plotGroup->getPlotGrouping();
 723:             $objWriter->startElement('c:grouping');
 724:                 $objWriter->writeAttribute('val', $plotGroupingType);
 725:             $objWriter->endElement();
 726:         }
 727: 
 728:         //  Get these details before the loop, because we can use the count to check for varyColors
 729:         $plotSeriesOrder = $plotGroup->getPlotOrder();
 730:         $plotSeriesCount = count($plotSeriesOrder);
 731: 
 732:         if (($groupType !== PHPExcel_Chart_DataSeries::TYPE_RADARCHART) &&
 733:             ($groupType !== PHPExcel_Chart_DataSeries::TYPE_STOCKCHART)) {
 734: 
 735:             if ($groupType !== PHPExcel_Chart_DataSeries::TYPE_LINECHART) {
 736:                 if (($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART) ||
 737:                     ($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) ||
 738:                     ($groupType == PHPExcel_Chart_DataSeries::TYPE_DONUTCHART) ||
 739:                     ($plotSeriesCount > 1)) {
 740:                     $objWriter->startElement('c:varyColors');
 741:                         $objWriter->writeAttribute('val', 1);
 742:                     $objWriter->endElement();
 743:                 } else {
 744:                     $objWriter->startElement('c:varyColors');
 745:                         $objWriter->writeAttribute('val', 0);
 746:                     $objWriter->endElement();
 747:                 }
 748:             }
 749:         }
 750: 
 751:         foreach($plotSeriesOrder as $plotSeriesIdx => $plotSeriesRef) {
 752:             $objWriter->startElement('c:ser');
 753: 
 754:                 $objWriter->startElement('c:idx');
 755:                     $objWriter->writeAttribute('val', $this->_seriesIndex + $plotSeriesIdx);
 756:                 $objWriter->endElement();
 757: 
 758:                 $objWriter->startElement('c:order');
 759:                     $objWriter->writeAttribute('val', $this->_seriesIndex + $plotSeriesRef);
 760:                 $objWriter->endElement();
 761: 
 762:                 if (($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART) ||
 763:                     ($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) ||
 764:                     ($groupType == PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) {
 765: 
 766:                     $objWriter->startElement('c:dPt');
 767:                         $objWriter->startElement('c:idx');
 768:                             $objWriter->writeAttribute('val', 3);
 769:                         $objWriter->endElement();
 770: 
 771:                         $objWriter->startElement('c:bubble3D');
 772:                             $objWriter->writeAttribute('val', 0);
 773:                         $objWriter->endElement();
 774: 
 775:                         $objWriter->startElement('c:spPr');
 776:                             $objWriter->startElement('a:solidFill');
 777:                                 $objWriter->startElement('a:srgbClr');
 778:                                     $objWriter->writeAttribute('val', 'FF9900');
 779:                                 $objWriter->endElement();
 780:                             $objWriter->endElement();
 781:                         $objWriter->endElement();
 782:                     $objWriter->endElement();
 783:                 }
 784: 
 785:                 //  Labels
 786:                 $plotSeriesLabel = $plotGroup->getPlotLabelByIndex($plotSeriesRef);
 787:                 if ($plotSeriesLabel && ($plotSeriesLabel->getPointCount() > 0)) {
 788:                     $objWriter->startElement('c:tx');
 789:                         $objWriter->startElement('c:strRef');
 790:                             $this->_writePlotSeriesLabel($plotSeriesLabel, $objWriter);
 791:                         $objWriter->endElement();
 792:                     $objWriter->endElement();
 793:                 }
 794: 
 795:                 //  Formatting for the points
 796:                 if (($groupType == PHPExcel_Chart_DataSeries::TYPE_LINECHART) ||
 797:                     ($groupType == PHPExcel_Chart_DataSeries::TYPE_STOCKCHART)) {
 798:                     $objWriter->startElement('c:spPr');
 799:                         $objWriter->startElement('a:ln');
 800:                             $objWriter->writeAttribute('w', 12700);
 801:                             if ($groupType == PHPExcel_Chart_DataSeries::TYPE_STOCKCHART) {
 802:                                 $objWriter->startElement('a:noFill');
 803:                                 $objWriter->endElement();
 804:                             }
 805:                         $objWriter->endElement();
 806:                     $objWriter->endElement();
 807:                 }
 808: 
 809:                 $plotSeriesValues = $plotGroup->getPlotValuesByIndex($plotSeriesRef);
 810:                 if ($plotSeriesValues) {
 811:                     $plotSeriesMarker = $plotSeriesValues->getPointMarker();
 812:                     if ($plotSeriesMarker) {
 813:                         $objWriter->startElement('c:marker');
 814:                             $objWriter->startElement('c:symbol');
 815:                                 $objWriter->writeAttribute('val', $plotSeriesMarker);
 816:                             $objWriter->endElement();
 817: 
 818:                             if ($plotSeriesMarker !== 'none') {
 819:                                 $objWriter->startElement('c:size');
 820:                                     $objWriter->writeAttribute('val', 3);
 821:                                 $objWriter->endElement();
 822:                             }
 823:                         $objWriter->endElement();
 824:                     }
 825:                 }
 826: 
 827:                 if (($groupType === PHPExcel_Chart_DataSeries::TYPE_BARCHART) ||
 828:                     ($groupType === PHPExcel_Chart_DataSeries::TYPE_BARCHART_3D) ||
 829:                     ($groupType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART)) {
 830: 
 831:                     $objWriter->startElement('c:invertIfNegative');
 832:                         $objWriter->writeAttribute('val', 0);
 833:                     $objWriter->endElement();
 834:                 }
 835: 
 836:                 //  Category Labels
 837:                 $plotSeriesCategory = $plotGroup->getPlotCategoryByIndex($plotSeriesRef);
 838:                 if ($plotSeriesCategory && ($plotSeriesCategory->getPointCount() > 0)) {
 839:                     $catIsMultiLevelSeries = $catIsMultiLevelSeries || $plotSeriesCategory->isMultiLevelSeries();
 840: 
 841:                     if (($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART) ||
 842:                         ($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) ||
 843:                         ($groupType == PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) {
 844: 
 845:                         if (!is_null($plotGroup->getPlotStyle())) {
 846:                             $plotStyle = $plotGroup->getPlotStyle();
 847:                             if ($plotStyle) {
 848:                                 $objWriter->startElement('c:explosion');
 849:                                     $objWriter->writeAttribute('val', 25);
 850:                                 $objWriter->endElement();
 851:                             }
 852:                         }
 853:                     }
 854: 
 855:                     if (($groupType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) ||
 856:                         ($groupType === PHPExcel_Chart_DataSeries::TYPE_SCATTERCHART)) {
 857:                         $objWriter->startElement('c:xVal');
 858:                     } else {
 859:                         $objWriter->startElement('c:cat');
 860:                     }
 861: 
 862:                         $this->_writePlotSeriesValues($plotSeriesCategory, $objWriter, $groupType, 'str', $pSheet);
 863:                     $objWriter->endElement();
 864:                 }
 865: 
 866:                 //  Values
 867:                 if ($plotSeriesValues) {
 868:                     $valIsMultiLevelSeries = $valIsMultiLevelSeries || $plotSeriesValues->isMultiLevelSeries();
 869: 
 870:                     if (($groupType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) ||
 871:                         ($groupType === PHPExcel_Chart_DataSeries::TYPE_SCATTERCHART)) {
 872:                         $objWriter->startElement('c:yVal');
 873:                     } else {
 874:                         $objWriter->startElement('c:val');
 875:                     }
 876: 
 877:                         $this->_writePlotSeriesValues($plotSeriesValues, $objWriter, $groupType, 'num', $pSheet);
 878:                     $objWriter->endElement();
 879:                 }
 880: 
 881:                 if ($groupType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) {
 882:                     $this->_writeBubbles($plotSeriesValues, $objWriter, $pSheet);
 883:                 }
 884: 
 885:             $objWriter->endElement();
 886: 
 887:         }
 888: 
 889:         $this->_seriesIndex += $plotSeriesIdx + 1;
 890:     }
 891: 
 892:     /**
 893:      * Write Plot Series Label
 894:      *
 895:      * @param   PHPExcel_Chart_DataSeriesValues     $plotSeriesLabel
 896:      * @param   PHPExcel_Shared_XMLWriter           $objWriter          XML Writer
 897:      * @throws  PHPExcel_Writer_Exception
 898:      */
 899:     private function _writePlotSeriesLabel($plotSeriesLabel, $objWriter)
 900:     {
 901:         if (is_null($plotSeriesLabel)) {
 902:             return;
 903:         }
 904: 
 905:         $objWriter->startElement('c:f');
 906:             $objWriter->writeRawData($plotSeriesLabel->getDataSource());
 907:         $objWriter->endElement();
 908: 
 909:         $objWriter->startElement('c:strCache');
 910:             $objWriter->startElement('c:ptCount');
 911:                 $objWriter->writeAttribute('val', $plotSeriesLabel->getPointCount() );
 912:             $objWriter->endElement();
 913: 
 914:             foreach($plotSeriesLabel->getDataValues() as $plotLabelKey => $plotLabelValue) {
 915:                 $objWriter->startElement('c:pt');
 916:                     $objWriter->writeAttribute('idx', $plotLabelKey );
 917: 
 918:                     $objWriter->startElement('c:v');
 919:                         $objWriter->writeRawData( $plotLabelValue );
 920:                     $objWriter->endElement();
 921:                 $objWriter->endElement();
 922:             }
 923:         $objWriter->endElement();
 924: 
 925:     }
 926: 
 927:     /**
 928:      * Write Plot Series Values
 929:      *
 930:      * @param   PHPExcel_Chart_DataSeriesValues     $plotSeriesValues
 931:      * @param   PHPExcel_Shared_XMLWriter           $objWriter          XML Writer
 932:      * @param   string                              $groupType          Type of plot for dataseries
 933:      * @param   string                              $dataType           Datatype of series values
 934:      * @param   PHPExcel_Worksheet                  $pSheet
 935:      * @throws  PHPExcel_Writer_Exception
 936:      */
 937:     private function _writePlotSeriesValues( $plotSeriesValues,
 938:                                              $objWriter,
 939:                                              $groupType,
 940:                                              $dataType='str',
 941:                                              PHPExcel_Worksheet $pSheet
 942:                                            )
 943:     {
 944:         if (is_null($plotSeriesValues)) {
 945:             return;
 946:         }
 947: 
 948:         if ($plotSeriesValues->isMultiLevelSeries()) {
 949:             $levelCount = $plotSeriesValues->multiLevelCount();
 950: 
 951:             $objWriter->startElement('c:multiLvlStrRef');
 952: 
 953:                 $objWriter->startElement('c:f');
 954:                     $objWriter->writeRawData( $plotSeriesValues->getDataSource() );
 955:                 $objWriter->endElement();
 956: 
 957:                 $objWriter->startElement('c:multiLvlStrCache');
 958: 
 959:                     $objWriter->startElement('c:ptCount');
 960:                         $objWriter->writeAttribute('val', $plotSeriesValues->getPointCount() );
 961:                     $objWriter->endElement();
 962: 
 963:                     for ($level = 0; $level < $levelCount; ++$level) {
 964:                         $objWriter->startElement('c:lvl');
 965: 
 966:                         foreach($plotSeriesValues->getDataValues() as $plotSeriesKey => $plotSeriesValue) {
 967:                             if (isset($plotSeriesValue[$level])) {
 968:                                 $objWriter->startElement('c:pt');
 969:                                     $objWriter->writeAttribute('idx', $plotSeriesKey );
 970: 
 971:                                     $objWriter->startElement('c:v');
 972:                                         $objWriter->writeRawData( $plotSeriesValue[$level] );
 973:                                     $objWriter->endElement();
 974:                                 $objWriter->endElement();
 975:                             }
 976:                         }
 977: 
 978:                         $objWriter->endElement();
 979:                     }
 980: 
 981:                 $objWriter->endElement();
 982: 
 983:             $objWriter->endElement();
 984:         } else {
 985:             $objWriter->startElement('c:'.$dataType.'Ref');
 986: 
 987:                 $objWriter->startElement('c:f');
 988:                     $objWriter->writeRawData( $plotSeriesValues->getDataSource() );
 989:                 $objWriter->endElement();
 990: 
 991:                 $objWriter->startElement('c:'.$dataType.'Cache');
 992: 
 993:                     if (($groupType != PHPExcel_Chart_DataSeries::TYPE_PIECHART) &&
 994:                         ($groupType != PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) &&
 995:                         ($groupType != PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) {
 996: 
 997:                         if (($plotSeriesValues->getFormatCode() !== NULL) &&
 998:                             ($plotSeriesValues->getFormatCode() !== '')) {
 999:                             $objWriter->startElement('c:formatCode');
1000:                                 $objWriter->writeRawData( $plotSeriesValues->getFormatCode() );
1001:                             $objWriter->endElement();
1002:                         }
1003:                     }
1004: 
1005:                     $objWriter->startElement('c:ptCount');
1006:                         $objWriter->writeAttribute('val', $plotSeriesValues->getPointCount() );
1007:                     $objWriter->endElement();
1008: 
1009:                     $dataValues = $plotSeriesValues->getDataValues();
1010:                     if (!empty($dataValues)) {
1011:                         if (is_array($dataValues)) {
1012:                             foreach($dataValues as $plotSeriesKey => $plotSeriesValue) {
1013:                                 $objWriter->startElement('c:pt');
1014:                                     $objWriter->writeAttribute('idx', $plotSeriesKey );
1015: 
1016:                                     $objWriter->startElement('c:v');
1017:                                         $objWriter->writeRawData( $plotSeriesValue );
1018:                                     $objWriter->endElement();
1019:                                 $objWriter->endElement();
1020:                             }
1021:                         }
1022:                     }
1023: 
1024:                 $objWriter->endElement();
1025: 
1026:             $objWriter->endElement();
1027:         }
1028:     }
1029: 
1030:     /**
1031:      * Write Bubble Chart Details
1032:      *
1033:      * @param   PHPExcel_Chart_DataSeriesValues     $plotSeriesValues
1034:      * @param   PHPExcel_Shared_XMLWriter           $objWriter          XML Writer
1035:      * @throws  PHPExcel_Writer_Exception
1036:      */
1037:     private function _writeBubbles($plotSeriesValues, $objWriter, PHPExcel_Worksheet $pSheet)
1038:     {
1039:         if (is_null($plotSeriesValues)) {
1040:             return;
1041:         }
1042: 
1043:         $objWriter->startElement('c:bubbleSize');
1044:             $objWriter->startElement('c:numLit');
1045: 
1046:                 $objWriter->startElement('c:formatCode');
1047:                     $objWriter->writeRawData( 'General' );
1048:                 $objWriter->endElement();
1049: 
1050:                 $objWriter->startElement('c:ptCount');
1051:                     $objWriter->writeAttribute('val', $plotSeriesValues->getPointCount() );
1052:                 $objWriter->endElement();
1053: 
1054:                 $dataValues = $plotSeriesValues->getDataValues();
1055:                 if (!empty($dataValues)) {
1056:                     if (is_array($dataValues)) {
1057:                         foreach($dataValues as $plotSeriesKey => $plotSeriesValue) {
1058:                             $objWriter->startElement('c:pt');
1059:                                 $objWriter->writeAttribute('idx', $plotSeriesKey );
1060:                                 $objWriter->startElement('c:v');
1061:                                     $objWriter->writeRawData( 1 );
1062:                                 $objWriter->endElement();
1063:                             $objWriter->endElement();
1064:                         }
1065:                     }
1066:                 }
1067: 
1068:             $objWriter->endElement();
1069:         $objWriter->endElement();
1070: 
1071:         $objWriter->startElement('c:bubble3D');
1072:             $objWriter->writeAttribute('val', 0 );
1073:         $objWriter->endElement();
1074:     }
1075: 
1076:     /**
1077:      * Write Layout
1078:      *
1079:      * @param   PHPExcel_Chart_Layout       $layout
1080:      * @param   PHPExcel_Shared_XMLWriter   $objWriter      XML Writer
1081:      * @throws  PHPExcel_Writer_Exception
1082:      */
1083:     private function _writeLayout(PHPExcel_Chart_Layout $layout = NULL, $objWriter)
1084:     {
1085:         $objWriter->startElement('c:layout');
1086: 
1087:             if (!is_null($layout)) {
1088:                 $objWriter->startElement('c:manualLayout');
1089: 
1090:                     $layoutTarget = $layout->getLayoutTarget();
1091:                     if (!is_null($layoutTarget)) {
1092:                         $objWriter->startElement('c:layoutTarget');
1093:                             $objWriter->writeAttribute('val', $layoutTarget);
1094:                         $objWriter->endElement();
1095:                     }
1096: 
1097:                     $xMode = $layout->getXMode();
1098:                     if (!is_null($xMode)) {
1099:                         $objWriter->startElement('c:xMode');
1100:                             $objWriter->writeAttribute('val', $xMode);
1101:                         $objWriter->endElement();
1102:                     }
1103: 
1104:                     $yMode = $layout->getYMode();
1105:                     if (!is_null($yMode)) {
1106:                         $objWriter->startElement('c:yMode');
1107:                             $objWriter->writeAttribute('val', $yMode);
1108:                         $objWriter->endElement();
1109:                     }
1110: 
1111:                     $x = $layout->getXPosition();
1112:                     if (!is_null($x)) {
1113:                         $objWriter->startElement('c:x');
1114:                             $objWriter->writeAttribute('val', $x);
1115:                         $objWriter->endElement();
1116:                     }
1117: 
1118:                     $y = $layout->getYPosition();
1119:                     if (!is_null($y)) {
1120:                         $objWriter->startElement('c:y');
1121:                             $objWriter->writeAttribute('val', $y);
1122:                         $objWriter->endElement();
1123:                     }
1124: 
1125:                     $w = $layout->getWidth();
1126:                     if (!is_null($w)) {
1127:                         $objWriter->startElement('c:w');
1128:                             $objWriter->writeAttribute('val', $w);
1129:                         $objWriter->endElement();
1130:                     }
1131: 
1132:                     $h = $layout->getHeight();
1133:                     if (!is_null($h)) {
1134:                         $objWriter->startElement('c:h');
1135:                             $objWriter->writeAttribute('val', $h);
1136:                         $objWriter->endElement();
1137:                     }
1138: 
1139:                 $objWriter->endElement();
1140:             }
1141: 
1142:         $objWriter->endElement();
1143:     }
1144: 
1145:     /**
1146:      * Write Alternate Content block
1147:      *
1148:      * @param   PHPExcel_Shared_XMLWriter   $objWriter      XML Writer
1149:      * @throws  PHPExcel_Writer_Exception
1150:      */
1151:     private function _writeAlternateContent($objWriter)
1152:     {
1153:         $objWriter->startElement('mc:AlternateContent');
1154:             $objWriter->writeAttribute('xmlns:mc', 'http://schemas.openxmlformats.org/markup-compatibility/2006');
1155: 
1156:             $objWriter->startElement('mc:Choice');
1157:                 $objWriter->writeAttribute('xmlns:c14', 'http://schemas.microsoft.com/office/drawing/2007/8/2/chart');
1158:                 $objWriter->writeAttribute('Requires', 'c14');
1159: 
1160:                 $objWriter->startElement('c14:style');
1161:                     $objWriter->writeAttribute('val', '102');
1162:                 $objWriter->endElement();
1163:             $objWriter->endElement();
1164: 
1165:             $objWriter->startElement('mc:Fallback');
1166:                 $objWriter->startElement('c:style');
1167:                     $objWriter->writeAttribute('val', '2');
1168:                 $objWriter->endElement();
1169:             $objWriter->endElement();
1170: 
1171:         $objWriter->endElement();
1172:     }
1173: 
1174:     /**
1175:      * Write Printer Settings
1176:      *
1177:      * @param   PHPExcel_Shared_XMLWriter   $objWriter      XML Writer
1178:      * @throws  PHPExcel_Writer_Exception
1179:      */
1180:     private function _writePrintSettings($objWriter)
1181:     {
1182:         $objWriter->startElement('c:printSettings');
1183: 
1184:             $objWriter->startElement('c:headerFooter');
1185:             $objWriter->endElement();
1186: 
1187:             $objWriter->startElement('c:pageMargins');
1188:                 $objWriter->writeAttribute('footer', 0.3);
1189:                 $objWriter->writeAttribute('header', 0.3);
1190:                 $objWriter->writeAttribute('r', 0.7);
1191:                 $objWriter->writeAttribute('l', 0.7);
1192:                 $objWriter->writeAttribute('t', 0.75);
1193:                 $objWriter->writeAttribute('b', 0.75);
1194:             $objWriter->endElement();
1195: 
1196:             $objWriter->startElement('c:pageSetup');
1197:                 $objWriter->writeAttribute('orientation', "portrait");
1198:             $objWriter->endElement();
1199: 
1200:         $objWriter->endElement();
1201:     }
1202: 
1203: }
1204: 
Autene API documentation generated by ApiGen