source: pro-violet-viettel/sourcecode/application/libraries/PHPExcel/Writer/Excel2007/Chart.php @ 726

Last change on this file since 726 was 289, checked in by dungnv, 11 years ago
File size: 37.1 KB
Line 
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 */
36class 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}
Note: See TracBrowser for help on using the repository browser.