PHPExcel_Writer_Excel2007
[ class tree: PHPExcel_Writer_Excel2007 ] [ index: PHPExcel_Writer_Excel2007 ] [ all elements ]

Source for file Worksheet.php

Documentation is available at Worksheet.php

  1. <?php
  2. /**
  3.  * PHPExcel
  4.  *
  5.  * Copyright (c) 2006 - 2010 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 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
  24.  * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
  25.  * @version    1.7.3c, 2010-06-01
  26.  */
  27.  
  28.  
  29. /**
  30.  * PHPExcel_Writer_Excel2007_Worksheet
  31.  *
  32.  * @category   PHPExcel
  33.  * @package    PHPExcel_Writer_Excel2007
  34.  * @copyright  Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
  35.  */
  36. {
  37.     /**
  38.      * Write worksheet to XML format
  39.      *
  40.      * @param    PHPExcel_Worksheet        $pSheet 
  41.      * @param    string[]                $pStringTable 
  42.      * @return    string                    XML Output
  43.      * @throws    Exception
  44.      */
  45.     public function writeWorksheet($pSheet null$pStringTable null)
  46.     {
  47.         if (!is_null($pSheet)) {
  48.             // Create XML writer
  49.             $objWriter null;
  50.             if ($this->getParentWriter()->getUseDiskCaching()) {
  51.                 $objWriter new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK$this->getParentWriter()->getDiskCachingDirectory());
  52.             else {
  53.                 $objWriter new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
  54.             }
  55.  
  56.             // XML header
  57.             $objWriter->startDocument('1.0','UTF-8','yes');
  58.  
  59.             // Worksheet
  60.             $objWriter->startElement('worksheet');
  61.             $objWriter->writeAttribute('xml:space''preserve');
  62.             $objWriter->writeAttribute('xmlns''http://schemas.openxmlformats.org/spreadsheetml/2006/main');
  63.             $objWriter->writeAttribute('xmlns:r''http://schemas.openxmlformats.org/officeDocument/2006/relationships');
  64.  
  65.                 // sheetPr
  66.                 $this->_writeSheetPr($objWriter$pSheet);
  67.  
  68.                 // Dimension
  69.                 $this->_writeDimension($objWriter$pSheet);
  70.  
  71.                 // sheetViews
  72.                 $this->_writeSheetViews($objWriter$pSheet);
  73.  
  74.                 // sheetFormatPr
  75.                 $this->_writeSheetFormatPr($objWriter$pSheet);
  76.  
  77.                 // cols
  78.                 $this->_writeCols($objWriter$pSheet);
  79.  
  80.                 // sheetData
  81.                 $this->_writeSheetData($objWriter$pSheet$pStringTable);
  82.  
  83.                 // sheetProtection
  84.                 $this->_writeSheetProtection($objWriter$pSheet);
  85.  
  86.                 // protectedRanges
  87.                 $this->_writeProtectedRanges($objWriter$pSheet);
  88.  
  89.                 // autoFilter
  90.                 $this->_writeAutoFilter($objWriter$pSheet);
  91.  
  92.                 // mergeCells
  93.                 $this->_writeMergeCells($objWriter$pSheet);
  94.  
  95.                 // conditionalFormatting
  96.                 $this->_writeConditionalFormatting($objWriter$pSheet);
  97.  
  98.                 // dataValidations
  99.                 $this->_writeDataValidations($objWriter$pSheet);
  100.  
  101.                 // hyperlinks
  102.                 $this->_writeHyperlinks($objWriter$pSheet);
  103.  
  104.                 // Print options
  105.                 $this->_writePrintOptions($objWriter$pSheet);
  106.  
  107.                 // Page margins
  108.                 $this->_writePageMargins($objWriter$pSheet);
  109.  
  110.                 // Page setup
  111.                 $this->_writePageSetup($objWriter$pSheet);
  112.  
  113.                 // Header / footer
  114.                 $this->_writeHeaderFooter($objWriter$pSheet);
  115.  
  116.                 // Breaks
  117.                 $this->_writeBreaks($objWriter$pSheet);
  118.  
  119.                 // Drawings
  120.                 $this->_writeDrawings($objWriter$pSheet);
  121.  
  122.                 // LegacyDrawing
  123.                 $this->_writeLegacyDrawing($objWriter$pSheet);
  124.  
  125.                 // LegacyDrawingHF
  126.                 $this->_writeLegacyDrawingHF($objWriter$pSheet);
  127.  
  128.             $objWriter->endElement();
  129.  
  130.             // Return
  131.             return $objWriter->getData();
  132.         else {
  133.             throw new Exception("Invalid PHPExcel_Worksheet object passed.");
  134.         }
  135.     }
  136.  
  137.     /**
  138.      * Write SheetPr
  139.      *
  140.      * @param    PHPExcel_Shared_XMLWriter        $objWriter        XML Writer
  141.      * @param    PHPExcel_Worksheet                $pSheet            Worksheet
  142.      * @throws    Exception
  143.      */
  144.     private function _writeSheetPr(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  145.     {
  146.         // sheetPr
  147.         $objWriter->startElement('sheetPr');
  148.         //$objWriter->writeAttribute('codeName',        $pSheet->getTitle());
  149.  
  150.             // tabColor
  151.             if ($pSheet->isTabColorSet()) {
  152.                 $objWriter->startElement('tabColor');
  153.                 $objWriter->writeAttribute('rgb',    $pSheet->getTabColor()->getARGB());
  154.                 $objWriter->endElement();
  155.             }
  156.  
  157.             // outlinePr
  158.             $objWriter->startElement('outlinePr');
  159.             $objWriter->writeAttribute('summaryBelow',    ($pSheet->getShowSummaryBelow('1' '0'));
  160.             $objWriter->writeAttribute('summaryRight',    ($pSheet->getShowSummaryRight('1' '0'));
  161.             $objWriter->endElement();
  162.  
  163.             // pageSetUpPr
  164.             if ($pSheet->getPageSetup()->getFitToPage()) {
  165.                 $objWriter->startElement('pageSetUpPr');
  166.                 $objWriter->writeAttribute('fitToPage',    '1');
  167.                 $objWriter->endElement();
  168.             }
  169.  
  170.         $objWriter->endElement();
  171.     }
  172.  
  173.     /**
  174.      * Write Dimension
  175.      *
  176.      * @param    PHPExcel_Shared_XMLWriter    $objWriter        XML Writer
  177.      * @param    PHPExcel_Worksheet            $pSheet            Worksheet
  178.      * @throws    Exception
  179.      */
  180.     private function _writeDimension(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  181.     {
  182.         // dimension
  183.         $objWriter->startElement('dimension');
  184.         $objWriter->writeAttribute('ref'$pSheet->calculateWorksheetDimension());
  185.         $objWriter->endElement();
  186.     }
  187.  
  188.     /**
  189.      * Write SheetViews
  190.      *
  191.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  192.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  193.      * @throws    Exception
  194.      */
  195.     private function _writeSheetViews(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  196.     {
  197.         // sheetViews
  198.         $objWriter->startElement('sheetViews');
  199.  
  200.             // Sheet selected?
  201.             $sheetSelected false;
  202.             if ($this->getParentWriter()->getPHPExcel()->getIndex($pSheet== $this->getParentWriter()->getPHPExcel()->getActiveSheetIndex())
  203.                 $sheetSelected true;
  204.  
  205.  
  206.             // sheetView
  207.             $objWriter->startElement('sheetView');
  208.             $objWriter->writeAttribute('tabSelected',        $sheetSelected '1' '0');
  209.             $objWriter->writeAttribute('workbookViewId',    '0');
  210.  
  211.                 // Zoom scales
  212.                 if ($pSheet->getSheetView()->getZoomScale(!= 100{
  213.                     $objWriter->writeAttribute('zoomScale',    $pSheet->getSheetView()->getZoomScale());
  214.                 }
  215.                 if ($pSheet->getSheetView()->getZoomScaleNormal(!= 100{
  216.                     $objWriter->writeAttribute('zoomScaleNormal',    $pSheet->getSheetView()->getZoomScaleNormal());
  217.                 }
  218.  
  219.                 // Gridlines
  220.                 if ($pSheet->getShowGridlines()) {
  221.                     $objWriter->writeAttribute('showGridLines',    'true');
  222.                 else {
  223.                     $objWriter->writeAttribute('showGridLines',    'false');
  224.                 }
  225.  
  226.                 // Row and column headers
  227.                 if ($pSheet->getShowRowColHeaders()) {
  228.                     $objWriter->writeAttribute('showRowColHeaders''1');
  229.                 else {
  230.                     $objWriter->writeAttribute('showRowColHeaders''0');
  231.                 }
  232.  
  233.                 // Right-to-left
  234.                 if ($pSheet->getRightToLeft()) {
  235.                     $objWriter->writeAttribute('rightToLeft',    'true');
  236.                 }
  237.  
  238.                 // Pane
  239.                 if ($pSheet->getFreezePane(!= ''{
  240.                     // Calculate freeze coordinates
  241.                     $xSplit 0;
  242.                     $ySplit 0;
  243.                     $topLeftCell $pSheet->getFreezePane();
  244.  
  245.                     list($xSplit$ySplitPHPExcel_Cell::coordinateFromString($pSheet->getFreezePane());
  246.                     $xSplit PHPExcel_Cell::columnIndexFromString($xSplit);
  247.  
  248.                     // pane
  249.                     $objWriter->startElement('pane');
  250.                     $objWriter->writeAttribute('xSplit',        $xSplit 1);
  251.                     $objWriter->writeAttribute('ySplit',        $ySplit 1);
  252.                     $objWriter->writeAttribute('topLeftCell',    $topLeftCell);
  253.                     $objWriter->writeAttribute('activePane',    'bottomRight');
  254.                     $objWriter->writeAttribute('state',        'frozen');
  255.                     $objWriter->endElement();
  256.                 }
  257.  
  258.                 // Selection
  259.                 $objWriter->startElement('selection');
  260.                 $objWriter->writeAttribute('activeCell'$pSheet->getActiveCell());
  261.                 $objWriter->writeAttribute('sqref',      $pSheet->getSelectedCells());
  262.                 $objWriter->endElement();
  263.  
  264.             $objWriter->endElement();
  265.  
  266.         $objWriter->endElement();
  267.     }
  268.  
  269.     /**
  270.      * Write SheetFormatPr
  271.      *
  272.      * @param    PHPExcel_Shared_XMLWriter $objWriter        XML Writer
  273.      * @param    PHPExcel_Worksheet          $pSheet            Worksheet
  274.      * @throws    Exception
  275.      */
  276.     private function _writeSheetFormatPr(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  277.     {
  278.         // sheetFormatPr
  279.         $objWriter->startElement('sheetFormatPr');
  280.  
  281.             // Default row height
  282.             if ($pSheet->getDefaultRowDimension()->getRowHeight(>= 0{
  283.                 $objWriter->writeAttribute('customHeight',        'true');
  284.                 $objWriter->writeAttribute('defaultRowHeight',     PHPExcel_Shared_String::FormatNumber($pSheet->getDefaultRowDimension()->getRowHeight()));
  285.             else {
  286.                 $objWriter->writeAttribute('defaultRowHeight',     '12.75');
  287.             }
  288.  
  289.             // Default column width
  290.             if ($pSheet->getDefaultColumnDimension()->getWidth(>= 0{
  291.                 $objWriter->writeAttribute('defaultColWidth',     PHPExcel_Shared_String::FormatNumber($pSheet->getDefaultColumnDimension()->getWidth()));
  292.             }
  293.  
  294.             // Outline level - row
  295.             $outlineLevelRow 0;
  296.             foreach ($pSheet->getRowDimensions(as $dimension{
  297.                 if ($dimension->getOutlineLevel($outlineLevelRow{
  298.                     $outlineLevelRow $dimension->getOutlineLevel();
  299.                 }
  300.             }
  301.             $objWriter->writeAttribute('outlineLevelRow',         (int)$outlineLevelRow);
  302.  
  303.             // Outline level - column
  304.             $outlineLevelCol 0;
  305.             foreach ($pSheet->getColumnDimensions(as $dimension{
  306.                 if ($dimension->getOutlineLevel($outlineLevelCol{
  307.                     $outlineLevelCol $dimension->getOutlineLevel();
  308.                 }
  309.             }
  310.             $objWriter->writeAttribute('outlineLevelCol',         (int)$outlineLevelCol);
  311.  
  312.         $objWriter->endElement();
  313.     }
  314.  
  315.     /**
  316.      * Write Cols
  317.      *
  318.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  319.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  320.      * @throws    Exception
  321.      */
  322.     private function _writeCols(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  323.     {
  324.         // cols
  325.         if (count($pSheet->getColumnDimensions()) 0)  {
  326.             $objWriter->startElement('cols');
  327.  
  328.                 $pSheet->calculateColumnWidths();
  329.  
  330.                 // Loop through column dimensions
  331.                 foreach ($pSheet->getColumnDimensions(as $colDimension{
  332.                     // col
  333.                     $objWriter->startElement('col');
  334.                     $objWriter->writeAttribute('min',    PHPExcel_Cell::columnIndexFromString($colDimension->getColumnIndex()));
  335.                     $objWriter->writeAttribute('max',    PHPExcel_Cell::columnIndexFromString($colDimension->getColumnIndex()));
  336.  
  337.                     if ($colDimension->getWidth(0{
  338.                         // No width set, apply default of 10
  339.                         $objWriter->writeAttribute('width',        '9.10');
  340.                     else {
  341.                         // Width set
  342.                         $objWriter->writeAttribute('width',        PHPExcel_Shared_String::FormatNumber($colDimension->getWidth()));
  343.                     }
  344.  
  345.                     // Column visibility
  346.                     if ($colDimension->getVisible(== false{
  347.                         $objWriter->writeAttribute('hidden',        'true');
  348.                     }
  349.  
  350.                     // Auto size?
  351.                     if ($colDimension->getAutoSize()) {
  352.                         $objWriter->writeAttribute('bestFit',        'true');
  353.                     }
  354.  
  355.                     // Custom width?
  356.                     if ($colDimension->getWidth(!= $pSheet->getDefaultColumnDimension()->getWidth()) {
  357.                         $objWriter->writeAttribute('customWidth',    'true');
  358.                     }
  359.  
  360.                     // Collapsed
  361.                     if ($colDimension->getCollapsed(== true{
  362.                         $objWriter->writeAttribute('collapsed',        'true');
  363.                     }
  364.  
  365.                     // Outline level
  366.                     if ($colDimension->getOutlineLevel(0{
  367.                         $objWriter->writeAttribute('outlineLevel',    $colDimension->getOutlineLevel());
  368.                     }
  369.  
  370.                     // Style
  371.                     $objWriter->writeAttribute('style'$colDimension->getXfIndex());
  372.  
  373.                     $objWriter->endElement();
  374.                 }
  375.  
  376.             $objWriter->endElement();
  377.         }
  378.     }
  379.  
  380.     /**
  381.      * Write SheetProtection
  382.      *
  383.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  384.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  385.      * @throws    Exception
  386.      */
  387.     private function _writeSheetProtection(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  388.     {
  389.         // sheetProtection
  390.         $objWriter->startElement('sheetProtection');
  391.  
  392.         if ($pSheet->getProtection()->getPassword(!= ''{
  393.             $objWriter->writeAttribute('password',                $pSheet->getProtection()->getPassword());
  394.         }
  395.  
  396.         $objWriter->writeAttribute('sheet',                ($pSheet->getProtection()->getSheet()                'true' 'false'));
  397.         $objWriter->writeAttribute('objects',                ($pSheet->getProtection()->getObjects()            'true' 'false'));
  398.         $objWriter->writeAttribute('scenarios',            ($pSheet->getProtection()->getScenarios()            'true' 'false'));
  399.         $objWriter->writeAttribute('formatCells',            ($pSheet->getProtection()->getFormatCells()        'true' 'false'));
  400.         $objWriter->writeAttribute('formatColumns',        ($pSheet->getProtection()->getFormatColumns()        'true' 'false'));
  401.         $objWriter->writeAttribute('formatRows',            ($pSheet->getProtection()->getFormatRows()            'true' 'false'));
  402.         $objWriter->writeAttribute('insertColumns',        ($pSheet->getProtection()->getInsertColumns()        'true' 'false'));
  403.         $objWriter->writeAttribute('insertRows',            ($pSheet->getProtection()->getInsertRows()            'true' 'false'));
  404.         $objWriter->writeAttribute('insertHyperlinks',        ($pSheet->getProtection()->getInsertHyperlinks()    'true' 'false'));
  405.         $objWriter->writeAttribute('deleteColumns',        ($pSheet->getProtection()->getDeleteColumns()        'true' 'false'));
  406.         $objWriter->writeAttribute('deleteRows',            ($pSheet->getProtection()->getDeleteRows()            'true' 'false'));
  407.         $objWriter->writeAttribute('selectLockedCells',    ($pSheet->getProtection()->getSelectLockedCells()    'true' 'false'));
  408.         $objWriter->writeAttribute('sort',                    ($pSheet->getProtection()->getSort()                'true' 'false'));
  409.         $objWriter->writeAttribute('autoFilter',            ($pSheet->getProtection()->getAutoFilter()            'true' 'false'));
  410.         $objWriter->writeAttribute('pivotTables',            ($pSheet->getProtection()->getPivotTables()        'true' 'false'));
  411.         $objWriter->writeAttribute('selectUnlockedCells',    ($pSheet->getProtection()->getSelectUnlockedCells()    'true' 'false'));
  412.         $objWriter->endElement();
  413.     }
  414.  
  415.     /**
  416.      * Write ConditionalFormatting
  417.      *
  418.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  419.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  420.      * @throws    Exception
  421.      */
  422.     private function _writeConditionalFormatting(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  423.     {
  424.         // Conditional id
  425.         $id 1;
  426.  
  427.         // Loop through styles in the current worksheet
  428.         foreach ($pSheet->getConditionalStylesCollection(as $cellCoordinate => $conditionalStyles{
  429.             foreach ($conditionalStyles as $conditional{
  430.                 // WHY was this again?
  431.                 // if ($this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode( $conditional->getHashCode() ) == '') {
  432.                 //    continue;
  433.                 // }
  434.  
  435.                 if ($conditional->getConditionType(!= PHPExcel_Style_Conditional::CONDITION_NONE{
  436.                     // conditionalFormatting
  437.                     $objWriter->startElement('conditionalFormatting');
  438.                     $objWriter->writeAttribute('sqref',    $cellCoordinate);
  439.  
  440.                         // cfRule
  441.                         $objWriter->startElement('cfRule');
  442.                         $objWriter->writeAttribute('type',        $conditional->getConditionType());
  443.                         $objWriter->writeAttribute('dxfId',        $this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode$conditional->getHashCode() ));
  444.                         $objWriter->writeAttribute('priority',    $id++);
  445.  
  446.                         if (($conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CELLIS
  447.                                 ||
  448.                              $conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT)
  449.                             && $conditional->getOperatorType(!= PHPExcel_Style_Conditional::OPERATOR_NONE{
  450.                             $objWriter->writeAttribute('operator',    $conditional->getOperatorType());
  451.                         }
  452.  
  453.                         if ($conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
  454.                             && !is_null($conditional->getText())) {
  455.                             $objWriter->writeAttribute('text',    $conditional->getText());
  456.                         }
  457.  
  458.                          if ($conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
  459.                              && $conditional->getOperatorType(== PHPExcel_Style_Conditional::OPERATOR_CONTAINSTEXT
  460.                              && !is_null($conditional->getText())) {
  461.                              $objWriter->writeElement('formula',    'NOT(ISERROR(SEARCH("' $conditional->getText('",' $cellCoordinate ')))');
  462.                          else if ($conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
  463.                              && $conditional->getOperatorType(== PHPExcel_Style_Conditional::OPERATOR_BEGINSWITH
  464.                              && !is_null($conditional->getText())) {
  465.                              $objWriter->writeElement('formula',    'LEFT(' $cellCoordinate ',' strlen($conditional->getText()) ')="' $conditional->getText('"');
  466.                          else if ($conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
  467.                              && $conditional->getOperatorType(== PHPExcel_Style_Conditional::OPERATOR_ENDSWITH
  468.                              && !is_null($conditional->getText())) {
  469.                              $objWriter->writeElement('formula',    'RIGHT(' $cellCoordinate ',' strlen($conditional->getText()) ')="' $conditional->getText('"');
  470.                          else if ($conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
  471.                              && $conditional->getOperatorType(== PHPExcel_Style_Conditional::OPERATOR_NOTCONTAINS
  472.                              && !is_null($conditional->getText())) {
  473.                              $objWriter->writeElement('formula',    'ISERROR(SEARCH("' $conditional->getText('",' $cellCoordinate '))');
  474.                          else if ($conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CELLIS
  475.                             || $conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
  476.                             || $conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_EXPRESSION{
  477.                             foreach ($conditional->getConditions(as $formula{
  478.                                 // Formula
  479.                                 $objWriter->writeElement('formula',    $formula);
  480.                             }
  481.                         }
  482.  
  483.                         $objWriter->endElement();
  484.  
  485.                     $objWriter->endElement();
  486.                 }
  487.             }
  488.         }
  489.     }
  490.  
  491.     /**
  492.      * Write DataValidations
  493.      *
  494.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  495.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  496.      * @throws    Exception
  497.      */
  498.     private function _writeDataValidations(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  499.     {
  500.         // Datavalidation collection
  501.         $dataValidationCollection $pSheet->getDataValidationCollection();
  502.  
  503.         // Write data validations?
  504.         if (count($dataValidationCollection0{
  505.             $objWriter->startElement('dataValidations');
  506.             $objWriter->writeAttribute('count'count($dataValidationCollection));
  507.  
  508.             foreach ($dataValidationCollection as $coordinate => $dv{
  509.                 $objWriter->startElement('dataValidation');
  510.  
  511.                 if ($dv->getType(!= ''{
  512.                     $objWriter->writeAttribute('type'$dv->getType());
  513.                 }
  514.  
  515.                 if ($dv->getErrorStyle(!= ''{
  516.                     $objWriter->writeAttribute('errorStyle'$dv->getErrorStyle());
  517.                 }
  518.  
  519.                 if ($dv->getOperator(!= ''{
  520.                     $objWriter->writeAttribute('operator'$dv->getOperator());
  521.                 }
  522.  
  523.                 $objWriter->writeAttribute('allowBlank',        ($dv->getAllowBlank()        '1'  '0'));
  524.                 $objWriter->writeAttribute('showDropDown',        (!$dv->getShowDropDown()    '1'  '0'));
  525.                 $objWriter->writeAttribute('showInputMessage',    ($dv->getShowInputMessage()    '1'  '0'));
  526.                 $objWriter->writeAttribute('showErrorMessage',    ($dv->getShowErrorMessage()    '1'  '0'));
  527.  
  528.                 if ($dv->getErrorTitle(!== ''{
  529.                     $objWriter->writeAttribute('errorTitle'$dv->getErrorTitle());
  530.                 }
  531.                 if ($dv->getError(!== ''{
  532.                     $objWriter->writeAttribute('error'$dv->getError());
  533.                 }
  534.                 if ($dv->getPromptTitle(!== ''{
  535.                     $objWriter->writeAttribute('promptTitle'$dv->getPromptTitle());
  536.                 }
  537.                 if ($dv->getPrompt(!== ''{
  538.                     $objWriter->writeAttribute('prompt'$dv->getPrompt());
  539.                 }
  540.  
  541.                 $objWriter->writeAttribute('sqref'$coordinate);
  542.  
  543.                 if ($dv->getFormula1(!== ''{
  544.                     $objWriter->writeElement('formula1'$dv->getFormula1());
  545.                 }
  546.                 if ($dv->getFormula2(!== ''{
  547.                     $objWriter->writeElement('formula2'$dv->getFormula2());
  548.                 }
  549.  
  550.                 $objWriter->endElement();
  551.             }
  552.  
  553.             $objWriter->endElement();
  554.         }
  555.     }
  556.  
  557.     /**
  558.      * Write Hyperlinks
  559.      *
  560.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  561.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  562.      * @throws    Exception
  563.      */
  564.     private function _writeHyperlinks(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  565.     {
  566.         // Hyperlink collection
  567.         $hyperlinkCollection $pSheet->getHyperlinkCollection();
  568.  
  569.         // Relation ID
  570.         $relationId 1;
  571.  
  572.         // Write hyperlinks?
  573.         if (count($hyperlinkCollection0{
  574.             $objWriter->startElement('hyperlinks');
  575.  
  576.             foreach ($hyperlinkCollection as $coordinate => $hyperlink{
  577.                 $objWriter->startElement('hyperlink');
  578.  
  579.                 $objWriter->writeAttribute('ref'$coordinate);
  580.                 if (!$hyperlink->isInternal()) {
  581.                     $objWriter->writeAttribute('r:id',    'rId_hyperlink_' $relationId);
  582.                     ++$relationId;
  583.                 else {
  584.                     $objWriter->writeAttribute('location',    str_replace('sheet://'''$hyperlink->getUrl()));
  585.                 }
  586.  
  587.                 if ($hyperlink->getTooltip(!= ''{
  588.                     $objWriter->writeAttribute('tooltip'$hyperlink->getTooltip());
  589.                 }
  590.  
  591.                 $objWriter->endElement();
  592.             }
  593.  
  594.             $objWriter->endElement();
  595.         }
  596.     }
  597.  
  598.     /**
  599.      * Write ProtectedRanges
  600.      *
  601.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  602.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  603.      * @throws    Exception
  604.      */
  605.     private function _writeProtectedRanges(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  606.     {
  607.         if (count($pSheet->getProtectedCells()) 0{
  608.             // protectedRanges
  609.             $objWriter->startElement('protectedRanges');
  610.  
  611.                 // Loop protectedRanges
  612.                 foreach ($pSheet->getProtectedCells(as $protectedCell => $passwordHash{
  613.                     // protectedRange
  614.                     $objWriter->startElement('protectedRange');
  615.                     $objWriter->writeAttribute('name',        'p' md5($protectedCell));
  616.                     $objWriter->writeAttribute('sqref',    $protectedCell);
  617.                     $objWriter->writeAttribute('password',    $passwordHash);
  618.                     $objWriter->endElement();
  619.                 }
  620.  
  621.             $objWriter->endElement();
  622.         }
  623.     }
  624.  
  625.     /**
  626.      * Write MergeCells
  627.      *
  628.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  629.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  630.      * @throws    Exception
  631.      */
  632.     private function _writeMergeCells(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  633.     {
  634.         if (count($pSheet->getMergeCells()) 0{
  635.             // mergeCells
  636.             $objWriter->startElement('mergeCells');
  637.  
  638.                 // Loop mergeCells
  639.                 foreach ($pSheet->getMergeCells(as $mergeCell{
  640.                     // mergeCell
  641.                     $objWriter->startElement('mergeCell');
  642.                     $objWriter->writeAttribute('ref'$mergeCell);
  643.                     $objWriter->endElement();
  644.                 }
  645.  
  646.             $objWriter->endElement();
  647.         }
  648.     }
  649.  
  650.     /**
  651.      * Write PrintOptions
  652.      *
  653.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  654.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  655.      * @throws    Exception
  656.      */
  657.     private function _writePrintOptions(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  658.     {
  659.         // printOptions
  660.         $objWriter->startElement('printOptions');
  661.  
  662.         $objWriter->writeAttribute('gridLines',    ($pSheet->getPrintGridlines('true''false'));
  663.         $objWriter->writeAttribute('gridLinesSet',    'true');
  664.  
  665.         if ($pSheet->getPageSetup()->getHorizontalCentered()) {
  666.             $objWriter->writeAttribute('horizontalCentered''true');
  667.         }
  668.  
  669.         if ($pSheet->getPageSetup()->getVerticalCentered()) {
  670.             $objWriter->writeAttribute('verticalCentered''true');
  671.         }
  672.  
  673.         $objWriter->endElement();
  674.     }
  675.  
  676.     /**
  677.      * Write PageMargins
  678.      *
  679.      * @param    PHPExcel_Shared_XMLWriter                $objWriter        XML Writer
  680.      * @param    PHPExcel_Worksheet                        $pSheet            Worksheet
  681.      * @throws    Exception
  682.      */
  683.     private function _writePageMargins(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  684.     {
  685.         // pageMargins
  686.         $objWriter->startElement('pageMargins');
  687.         $objWriter->writeAttribute('left',        PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getLeft()));
  688.         $objWriter->writeAttribute('right',        PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getRight()));
  689.         $objWriter->writeAttribute('top',        PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getTop()));
  690.         $objWriter->writeAttribute('bottom',    PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getBottom()));
  691.         $objWriter->writeAttribute('header',    PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getHeader()));
  692.         $objWriter->writeAttribute('footer',    PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getFooter()));
  693.         $objWriter->endElement();
  694.     }
  695.  
  696.     /**
  697.      * Write AutoFilter
  698.      *
  699.      * @param    PHPExcel_Shared_XMLWriter                $objWriter        XML Writer
  700.      * @param    PHPExcel_Worksheet                        $pSheet            Worksheet
  701.      * @throws    Exception
  702.      */
  703.     private function _writeAutoFilter(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  704.     {
  705.         if ($pSheet->getAutoFilter(!= ''{
  706.             // autoFilter
  707.             $objWriter->startElement('autoFilter');
  708.             $objWriter->writeAttribute('ref',        $pSheet->getAutoFilter());
  709.             $objWriter->endElement();
  710.         }
  711.     }
  712.  
  713.     /**
  714.      * Write PageSetup
  715.      *
  716.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  717.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  718.      * @throws    Exception
  719.      */
  720.     private function _writePageSetup(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  721.     {
  722.         // pageSetup
  723.         $objWriter->startElement('pageSetup');
  724.         $objWriter->writeAttribute('paperSize',        $pSheet->getPageSetup()->getPaperSize());
  725.         $objWriter->writeAttribute('orientation',    $pSheet->getPageSetup()->getOrientation());
  726.  
  727.         if (!is_null($pSheet->getPageSetup()->getScale())) {
  728.             $objWriter->writeAttribute('scale',                 $pSheet->getPageSetup()->getScale());
  729.         }
  730.         if (!is_null($pSheet->getPageSetup()->getFitToHeight())) {
  731.             $objWriter->writeAttribute('fitToHeight',         $pSheet->getPageSetup()->getFitToHeight());
  732.         else {
  733.             $objWriter->writeAttribute('fitToHeight',         '0');
  734.         }
  735.         if (!is_null($pSheet->getPageSetup()->getFitToWidth())) {
  736.             $objWriter->writeAttribute('fitToWidth',         $pSheet->getPageSetup()->getFitToWidth());
  737.         else {
  738.             $objWriter->writeAttribute('fitToWidth',         '0');
  739.         }
  740.         if (!is_null($pSheet->getPageSetup()->getFirstPageNumber())) {
  741.             $objWriter->writeAttribute('firstPageNumber',    $pSheet->getPageSetup()->getFirstPageNumber());
  742.             $objWriter->writeAttribute('useFirstPageNumber''1');
  743.         }
  744.  
  745.         $objWriter->endElement();
  746.     }
  747.  
  748.     /**
  749.      * Write Header / Footer
  750.      *
  751.      * @param    PHPExcel_Shared_XMLWriter        $objWriter        XML Writer
  752.      * @param    PHPExcel_Worksheet                $pSheet            Worksheet
  753.      * @throws    Exception
  754.      */
  755.     private function _writeHeaderFooter(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  756.     {
  757.         // headerFooter
  758.         $objWriter->startElement('headerFooter');
  759.         $objWriter->writeAttribute('differentOddEven',    ($pSheet->getHeaderFooter()->getDifferentOddEven('true' 'false'));
  760.         $objWriter->writeAttribute('differentFirst',    ($pSheet->getHeaderFooter()->getDifferentFirst('true' 'false'));
  761.         $objWriter->writeAttribute('scaleWithDoc',        ($pSheet->getHeaderFooter()->getScaleWithDocument('true' 'false'));
  762.         $objWriter->writeAttribute('alignWithMargins',    ($pSheet->getHeaderFooter()->getAlignWithMargins('true' 'false'));
  763.  
  764.             $objWriter->writeElement('oddHeader',        $pSheet->getHeaderFooter()->getOddHeader());
  765.             $objWriter->writeElement('oddFooter',        $pSheet->getHeaderFooter()->getOddFooter());
  766.             $objWriter->writeElement('evenHeader',        $pSheet->getHeaderFooter()->getEvenHeader());
  767.             $objWriter->writeElement('evenFooter',        $pSheet->getHeaderFooter()->getEvenFooter());
  768.             $objWriter->writeElement('firstHeader',    $pSheet->getHeaderFooter()->getFirstHeader());
  769.             $objWriter->writeElement('firstFooter',    $pSheet->getHeaderFooter()->getFirstFooter());
  770.         $objWriter->endElement();
  771.     }
  772.  
  773.     /**
  774.      * Write Breaks
  775.      *
  776.      * @param    PHPExcel_Shared_XMLWriter        $objWriter        XML Writer
  777.      * @param    PHPExcel_Worksheet                $pSheet            Worksheet
  778.      * @throws    Exception
  779.      */
  780.     private function _writeBreaks(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  781.     {
  782.         // Get row and column breaks
  783.         $aRowBreaks array();
  784.         $aColumnBreaks array();
  785.         foreach ($pSheet->getBreaks(as $cell => $breakType{
  786.             if ($breakType == PHPExcel_Worksheet::BREAK_ROW{
  787.                 $aRowBreaks[$cell;
  788.             else if ($breakType == PHPExcel_Worksheet::BREAK_COLUMN{
  789.                 $aColumnBreaks[$cell;
  790.             }
  791.         }
  792.  
  793.         // rowBreaks
  794.         if (count($aRowBreaks0{
  795.             $objWriter->startElement('rowBreaks');
  796.             $objWriter->writeAttribute('count',            count($aRowBreaks));
  797.             $objWriter->writeAttribute('manualBreakCount',    count($aRowBreaks));
  798.  
  799.                 foreach ($aRowBreaks as $cell{
  800.                     $coords PHPExcel_Cell::coordinateFromString($cell);
  801.  
  802.                     $objWriter->startElement('brk');
  803.                     $objWriter->writeAttribute('id',    $coords[1]);
  804.                     $objWriter->writeAttribute('man',    '1');
  805.                     $objWriter->endElement();
  806.                 }
  807.  
  808.             $objWriter->endElement();
  809.         }
  810.  
  811.         // Second, write column breaks
  812.         if (count($aColumnBreaks0{
  813.             $objWriter->startElement('colBreaks');
  814.             $objWriter->writeAttribute('count',            count($aColumnBreaks));
  815.             $objWriter->writeAttribute('manualBreakCount',    count($aColumnBreaks));
  816.  
  817.                 foreach ($aColumnBreaks as $cell{
  818.                     $coords PHPExcel_Cell::coordinateFromString($cell);
  819.  
  820.                     $objWriter->startElement('brk');
  821.                     $objWriter->writeAttribute('id',    PHPExcel_Cell::columnIndexFromString($coords[0]1);
  822.                     $objWriter->writeAttribute('man',    '1');
  823.                     $objWriter->endElement();
  824.                 }
  825.  
  826.             $objWriter->endElement();
  827.         }
  828.     }
  829.  
  830.     /**
  831.      * Write SheetData
  832.      *
  833.      * @param    PHPExcel_Shared_XMLWriter        $objWriter        XML Writer
  834.      * @param    PHPExcel_Worksheet                $pSheet            Worksheet
  835.      * @param    string[]                        $pStringTable    String table
  836.      * @throws    Exception
  837.      */
  838.     private function _writeSheetData(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null$pStringTable null)
  839.     {
  840.         if (is_array($pStringTable)) {
  841.             // Flipped stringtable, for faster index searching
  842.             $aFlippedStringTable $this->getParentWriter()->getWriterPart('stringtable')->flipStringTable($pStringTable);
  843.  
  844.             // sheetData
  845.             $objWriter->startElement('sheetData');
  846.  
  847.                 // Get column count
  848.                 $colCount PHPExcel_Cell::columnIndexFromString($pSheet->getHighestColumn());
  849.  
  850.                 // Highest row number
  851.                 $highestRow $pSheet->getHighestRow();
  852.  
  853.                 // Loop through cells
  854.                 $cellsByRow array();
  855.                 foreach ($pSheet->getCellCollection(as $cellID{
  856.                     $cellAddress PHPExcel_Cell::coordinateFromString($cellID);
  857.                     $cellsByRow[$cellAddress[1]][$cellID;
  858.                 }
  859.  
  860.                 for ($currentRow 1$currentRow <= $highestRow++$currentRow{
  861.                     // Get row dimension
  862.                     $rowDimension $pSheet->getRowDimension($currentRow);
  863.  
  864.                     // Write current row?
  865.                     $writeCurrentRow =     isset($cellsByRow[$currentRow]||
  866.                                         $rowDimension->getRowHeight(>= ||
  867.                                         $rowDimension->getVisible(== false ||
  868.                                         $rowDimension->getCollapsed(== true ||
  869.                                         $rowDimension->getOutlineLevel(||
  870.                                         $rowDimension->getXfIndex(!== null;
  871.  
  872.                     if ($writeCurrentRow{
  873.                         // Start a new row
  874.                         $objWriter->startElement('row');
  875.                         $objWriter->writeAttribute('r',    $currentRow);
  876.                         $objWriter->writeAttribute('spans',    '1:' $colCount);
  877.  
  878.                         // Row dimensions
  879.                         if ($rowDimension->getRowHeight(>= 0{
  880.                             $objWriter->writeAttribute('customHeight',    '1');
  881.                             $objWriter->writeAttribute('ht',            PHPExcel_Shared_String::FormatNumber($rowDimension->getRowHeight()));
  882.                         }
  883.  
  884.                         // Row visibility
  885.                         if ($rowDimension->getVisible(== false{
  886.                             $objWriter->writeAttribute('hidden',        'true');
  887.                         }
  888.  
  889.                         // Collapsed
  890.                         if ($rowDimension->getCollapsed(== true{
  891.                             $objWriter->writeAttribute('collapsed',        'true');
  892.                         }
  893.  
  894.                         // Outline level
  895.                         if ($rowDimension->getOutlineLevel(0{
  896.                             $objWriter->writeAttribute('outlineLevel',    $rowDimension->getOutlineLevel());
  897.                         }
  898.  
  899.                         // Style
  900.                         if ($rowDimension->getXfIndex(!== null{
  901.                             $objWriter->writeAttribute('s',    $rowDimension->getXfIndex());
  902.                             $objWriter->writeAttribute('customFormat''1');
  903.                         }
  904.  
  905.                         // Write cells
  906.                         if (isset($cellsByRow[$currentRow])) {
  907.                             foreach($cellsByRow[$currentRowas $cellAddress{
  908.                                 // Write cell
  909.                                 $this->_writeCell($objWriter$pSheet$cellAddress$pStringTable$aFlippedStringTable);
  910.                             }
  911.                         }
  912.  
  913.                         // End row
  914.                         $objWriter->endElement();
  915.                     }
  916.                 }
  917.  
  918.             $objWriter->endElement();
  919.         else {
  920.             throw new Exception("Invalid parameters passed.");
  921.         }
  922.     }
  923.  
  924.     /**
  925.      * Write Cell
  926.      *
  927.      * @param    PHPExcel_Shared_XMLWriter    $objWriter                XML Writer
  928.      * @param    PHPExcel_Worksheet            $pSheet                    Worksheet
  929.      * @param    PHPExcel_Cell                $pCell                    Cell
  930.      * @param    string[]                    $pStringTable            String table
  931.      * @param    string[]                    $pFlippedStringTable    String table (flipped), for faster index searching
  932.      * @throws    Exception
  933.      */
  934.     private function _writeCell(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null$pCellAddress null$pStringTable null$pFlippedStringTable null)
  935.     {
  936.         $pCell $pSheet->getCell($pCellAddress);
  937.  
  938.         if (is_array($pStringTable&& is_array($pFlippedStringTable)) {
  939.             // Cell
  940.             $objWriter->startElement('c');
  941.             $objWriter->writeAttribute('r'$pCell->getCoordinate());
  942.  
  943.             // Sheet styles
  944.             if ($pCell->getXfIndex(!= ''{
  945.                 $objWriter->writeAttribute('s'$pCell->getXfIndex());
  946.             }
  947.  
  948.             // If cell value is supplied, write cell value
  949.             if (is_object($pCell->getValue()) || $pCell->getValue(!== ''{
  950.                 // Map type
  951.                 $mappedType $pCell->getDataType();
  952.  
  953.                 // Write data type depending on its type
  954.                 switch (strtolower($mappedType)) {
  955.                     case 'inlinestr':    // Inline string
  956.                         $objWriter->writeAttribute('t'$mappedType);
  957.                         break;
  958.                     case 's':            // String
  959.                         $objWriter->writeAttribute('t'$mappedType);
  960.                         break;
  961.                     case 'b':            // Boolean
  962.                         $objWriter->writeAttribute('t'$mappedType);
  963.                         break;
  964.                     case 'f':            // Formula
  965.                         $calculatedValue null;
  966.                         if ($this->getParentWriter()->getPreCalculateFormulas()) {
  967.                             $pCell->attach($pSheet);
  968.                             $calculatedValue $pCell->getCalculatedValue();
  969.                         else {
  970.                             $pCell->attach($pSheet);
  971.                             $calculatedValue $pCell->getValue();
  972.                         }
  973.                         if (is_string($calculatedValue)) {
  974.                             $objWriter->writeAttribute('t''str');
  975.                         }
  976.                         break;
  977.                     case 'e':            // Error
  978.                         $objWriter->writeAttribute('t'$mappedType);
  979.                 }
  980.  
  981.                 // Write data depending on its type
  982.                 switch (strtolower($mappedType)) {
  983.                     case 'inlinestr':    // Inline string
  984.                         if ($pCell->getValue(instanceof PHPExcel_RichText{
  985.                             $objWriter->writeElement('t'PHPExcel_Shared_String::ControlCharacterPHP2OOXMLhtmlspecialchars($pCell->getValue()) ) );
  986.                         else if ($pCell->getValue(instanceof PHPExcel_RichText{
  987.                             $objWriter->startElement('is');
  988.                             $this->getParentWriter()->getWriterPart('stringtable')->writeRichText($objWriter$pCell->getValue());
  989.                             $objWriter->endElement();
  990.                         }
  991.  
  992.                         break;
  993.                     case 's':            // String
  994.                         if ($pCell->getValue(instanceof PHPExcel_RichText{
  995.                             if (isset($pFlippedStringTable[$pCell->getValue()])) {
  996.                                 $objWriter->writeElement('v'$pFlippedStringTable[$pCell->getValue()]);
  997.                             }
  998.                         else if ($pCell->getValue(instanceof PHPExcel_RichText{
  999.                             $objWriter->writeElement('v'$pFlippedStringTable[$pCell->getValue()->getHashCode()]);
  1000.                         }
  1001.  
  1002.                         break;
  1003.                     case 'f':            // Formula
  1004.                         $objWriter->writeElement('f'substr($pCell->getValue()1));
  1005.                         if ($this->getParentWriter()->getOffice2003Compatibility(=== false{
  1006.                             if ($this->getParentWriter()->getPreCalculateFormulas()) {
  1007.                                 $calculatedValue $pCell->getCalculatedValue();
  1008.                                 if (!is_array($calculatedValue&& substr($calculatedValue01!= '#'{
  1009.                                     $v PHPExcel_Shared_String::FormatNumber($calculatedValue);
  1010.                                     $objWriter->writeElement('v'$v);
  1011.                                 else {
  1012.                                     $objWriter->writeElement('v''0');
  1013.                                 }
  1014.                             else {
  1015.                                 $objWriter->writeElement('v''0');
  1016.                             }
  1017.                         }
  1018.                         break;
  1019.                     case 'n':            // Numeric
  1020.                         // force point as decimal separator in case current locale uses comma
  1021.                         $v str_replace(',''.'$pCell->getValue());
  1022.                         $objWriter->writeElement('v'$v);
  1023.                         break;
  1024.                     case 'b':            // Boolean
  1025.                         $objWriter->writeElement('v'($pCell->getValue('1' '0'));
  1026.                         break;
  1027.                     case 'e':            // Error
  1028.                         if (substr($pCell->getValue()01== '='{
  1029.                             $objWriter->writeElement('f'substr($pCell->getValue()1));
  1030.                             $objWriter->writeElement('v'substr($pCell->getValue()1));
  1031.                         else {
  1032.                             $objWriter->writeElement('v'$pCell->getValue());
  1033.                         }
  1034.  
  1035.                         break;
  1036.                 }
  1037.             }
  1038.  
  1039.             $objWriter->endElement();
  1040.         else {
  1041.             throw new Exception("Invalid parameters passed.");
  1042.         }
  1043.     }
  1044.  
  1045.     /**
  1046.      * Write Drawings
  1047.      *
  1048.      * @param    PHPExcel_Shared_XMLWriter        $objWriter        XML Writer
  1049.      * @param    PHPExcel_Worksheet                $pSheet            Worksheet
  1050.      * @throws    Exception
  1051.      */
  1052.     private function _writeDrawings(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  1053.     {
  1054.         // If sheet contains drawings, add the relationships
  1055.         if ($pSheet->getDrawingCollection()->count(0{
  1056.             $objWriter->startElement('drawing');
  1057.             $objWriter->writeAttribute('r:id''rId1');
  1058.             $objWriter->endElement();
  1059.         }
  1060.     }
  1061.  
  1062.     /**
  1063.      * Write LegacyDrawing
  1064.      *
  1065.      * @param    PHPExcel_Shared_XMLWriter        $objWriter        XML Writer
  1066.      * @param    PHPExcel_Worksheet                $pSheet            Worksheet
  1067.      * @throws    Exception
  1068.      */
  1069.     private function _writeLegacyDrawing(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  1070.     {
  1071.         // If sheet contains comments, add the relationships
  1072.         if (count($pSheet->getComments()) 0{
  1073.             $objWriter->startElement('legacyDrawing');
  1074.             $objWriter->writeAttribute('r:id''rId_comments_vml1');
  1075.             $objWriter->endElement();
  1076.         }
  1077.     }
  1078.  
  1079.     /**
  1080.      * Write LegacyDrawingHF
  1081.      *
  1082.      * @param    PHPExcel_Shared_XMLWriter        $objWriter        XML Writer
  1083.      * @param    PHPExcel_Worksheet                $pSheet            Worksheet
  1084.      * @throws    Exception
  1085.      */
  1086.     private function _writeLegacyDrawingHF(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  1087.     {
  1088.         // If sheet contains comments, add the relationships
  1089.         if (count($pSheet->getHeaderFooter()->getImages()) 0{
  1090.             $objWriter->startElement('legacyDrawingHF');
  1091.             $objWriter->writeAttribute('r:id''rId_headerfooter_vml1');
  1092.             $objWriter->endElement();
  1093.         }
  1094.     }
  1095. }

Documentation generated on Tue, 01 Jun 2010 17:08:24 +0200 by phpDocumentor 1.4.3