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 - 2011 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 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
  24.  * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
  25.  * @version    1.7.6, 2011-02-27
  26.  */
  27.  
  28.  
  29. /**
  30.  * PHPExcel_Writer_Excel2007_Worksheet
  31.  *
  32.  * @category   PHPExcel
  33.  * @package    PHPExcel_Writer_Excel2007
  34.  * @copyright  Copyright (c) 2006 - 2011 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.                 $activeCell $pSheet->getActiveCell();
  239.  
  240.                 // Pane
  241.                 $pane '';
  242.                 $topLeftCell $pSheet->getFreezePane();
  243.                 if (($topLeftCell != ''&& ($topLeftCell != 'A1')) {
  244.                     $activeCell $topLeftCell;
  245.                     // Calculate freeze coordinates
  246.                     $xSplit $ySplit 0;
  247.  
  248.                     list($xSplit$ySplitPHPExcel_Cell::coordinateFromString($topLeftCell);
  249.                     $xSplit PHPExcel_Cell::columnIndexFromString($xSplit);
  250.  
  251.                     // pane
  252.                     $pane 'topRight';
  253.                     $objWriter->startElement('pane');
  254.                     if ($xSplit 1)
  255.                         $objWriter->writeAttribute('xSplit',    $xSplit 1);
  256.                     if ($ySplit 1{
  257.                         $objWriter->writeAttribute('ySplit',    $ySplit 1);
  258.                         $pane ($xSplit 1'bottomRight' 'bottomLeft';
  259.                     }
  260.                     $objWriter->writeAttribute('topLeftCell',    $topLeftCell);
  261.                     $objWriter->writeAttribute('activePane',    $pane);
  262.                     $objWriter->writeAttribute('state',        'frozen');
  263.                     $objWriter->endElement();
  264.  
  265.                     if (($xSplit 1&& ($ySplit 1)) {
  266.                         //    Write additional selections if more than two panes (ie both an X and a Y split)
  267.                         $objWriter->startElement('selection');    $objWriter->writeAttribute('pane''topRight');        $objWriter->endElement();
  268.                         $objWriter->startElement('selection');    $objWriter->writeAttribute('pane''bottomLeft');    $objWriter->endElement();
  269.                     }
  270.                 }
  271.  
  272.                 // Selection
  273.                 if ($pane != ''{
  274.                     //    Only need to write selection element if we have a split pane
  275.                     //        We cheat a little by over-riding the active cell selection, setting it to the split cell
  276.                     $objWriter->startElement('selection');
  277.                     $objWriter->writeAttribute('pane'$pane);
  278.                     $objWriter->writeAttribute('activeCell'$activeCell);
  279.                     $objWriter->writeAttribute('sqref'$activeCell);
  280.                     $objWriter->endElement();
  281.                 }
  282.  
  283.             $objWriter->endElement();
  284.  
  285.         $objWriter->endElement();
  286.     }
  287.  
  288.     /**
  289.      * Write SheetFormatPr
  290.      *
  291.      * @param    PHPExcel_Shared_XMLWriter $objWriter        XML Writer
  292.      * @param    PHPExcel_Worksheet          $pSheet            Worksheet
  293.      * @throws    Exception
  294.      */
  295.     private function _writeSheetFormatPr(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  296.     {
  297.         // sheetFormatPr
  298.         $objWriter->startElement('sheetFormatPr');
  299.  
  300.             // Default row height
  301.             if ($pSheet->getDefaultRowDimension()->getRowHeight(>= 0{
  302.                 $objWriter->writeAttribute('customHeight',        'true');
  303.                 $objWriter->writeAttribute('defaultRowHeight',    PHPExcel_Shared_String::FormatNumber($pSheet->getDefaultRowDimension()->getRowHeight()));
  304.             else {
  305.                 $objWriter->writeAttribute('defaultRowHeight''12.75');
  306.             }
  307.  
  308.             // Default column width
  309.             if ($pSheet->getDefaultColumnDimension()->getWidth(>= 0{
  310.                 $objWriter->writeAttribute('defaultColWidth'PHPExcel_Shared_String::FormatNumber($pSheet->getDefaultColumnDimension()->getWidth()));
  311.             }
  312.  
  313.             // Outline level - row
  314.             $outlineLevelRow 0;
  315.             foreach ($pSheet->getRowDimensions(as $dimension{
  316.                 if ($dimension->getOutlineLevel($outlineLevelRow{
  317.                     $outlineLevelRow $dimension->getOutlineLevel();
  318.                 }
  319.             }
  320.             $objWriter->writeAttribute('outlineLevelRow',    (int)$outlineLevelRow);
  321.  
  322.             // Outline level - column
  323.             $outlineLevelCol 0;
  324.             foreach ($pSheet->getColumnDimensions(as $dimension{
  325.                 if ($dimension->getOutlineLevel($outlineLevelCol{
  326.                     $outlineLevelCol $dimension->getOutlineLevel();
  327.                 }
  328.             }
  329.             $objWriter->writeAttribute('outlineLevelCol',    (int)$outlineLevelCol);
  330.  
  331.         $objWriter->endElement();
  332.     }
  333.  
  334.     /**
  335.      * Write Cols
  336.      *
  337.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  338.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  339.      * @throws    Exception
  340.      */
  341.     private function _writeCols(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  342.     {
  343.         // cols
  344.         if (count($pSheet->getColumnDimensions()) 0)  {
  345.             $objWriter->startElement('cols');
  346.  
  347.                 $pSheet->calculateColumnWidths();
  348.  
  349.                 // Loop through column dimensions
  350.                 foreach ($pSheet->getColumnDimensions(as $colDimension{
  351.                     // col
  352.                     $objWriter->startElement('col');
  353.                     $objWriter->writeAttribute('min',    PHPExcel_Cell::columnIndexFromString($colDimension->getColumnIndex()));
  354.                     $objWriter->writeAttribute('max',    PHPExcel_Cell::columnIndexFromString($colDimension->getColumnIndex()));
  355.  
  356.                     if ($colDimension->getWidth(0{
  357.                         // No width set, apply default of 10
  358.                         $objWriter->writeAttribute('width',        '9.10');
  359.                     else {
  360.                         // Width set
  361.                         $objWriter->writeAttribute('width',        PHPExcel_Shared_String::FormatNumber($colDimension->getWidth()));
  362.                     }
  363.  
  364.                     // Column visibility
  365.                     if ($colDimension->getVisible(== false{
  366.                         $objWriter->writeAttribute('hidden',        'true');
  367.                     }
  368.  
  369.                     // Auto size?
  370.                     if ($colDimension->getAutoSize()) {
  371.                         $objWriter->writeAttribute('bestFit',        'true');
  372.                     }
  373.  
  374.                     // Custom width?
  375.                     if ($colDimension->getWidth(!= $pSheet->getDefaultColumnDimension()->getWidth()) {
  376.                         $objWriter->writeAttribute('customWidth',    'true');
  377.                     }
  378.  
  379.                     // Collapsed
  380.                     if ($colDimension->getCollapsed(== true{
  381.                         $objWriter->writeAttribute('collapsed',        'true');
  382.                     }
  383.  
  384.                     // Outline level
  385.                     if ($colDimension->getOutlineLevel(0{
  386.                         $objWriter->writeAttribute('outlineLevel',    $colDimension->getOutlineLevel());
  387.                     }
  388.  
  389.                     // Style
  390.                     $objWriter->writeAttribute('style'$colDimension->getXfIndex());
  391.  
  392.                     $objWriter->endElement();
  393.                 }
  394.  
  395.             $objWriter->endElement();
  396.         }
  397.     }
  398.  
  399.     /**
  400.      * Write SheetProtection
  401.      *
  402.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  403.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  404.      * @throws    Exception
  405.      */
  406.     private function _writeSheetProtection(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  407.     {
  408.         // sheetProtection
  409.         $objWriter->startElement('sheetProtection');
  410.  
  411.         if ($pSheet->getProtection()->getPassword(!= ''{
  412.             $objWriter->writeAttribute('password',                $pSheet->getProtection()->getPassword());
  413.         }
  414.  
  415.         $objWriter->writeAttribute('sheet',                ($pSheet->getProtection()->getSheet()                'true' 'false'));
  416.         $objWriter->writeAttribute('objects',                ($pSheet->getProtection()->getObjects()            'true' 'false'));
  417.         $objWriter->writeAttribute('scenarios',            ($pSheet->getProtection()->getScenarios()            'true' 'false'));
  418.         $objWriter->writeAttribute('formatCells',            ($pSheet->getProtection()->getFormatCells()        'true' 'false'));
  419.         $objWriter->writeAttribute('formatColumns',        ($pSheet->getProtection()->getFormatColumns()        'true' 'false'));
  420.         $objWriter->writeAttribute('formatRows',            ($pSheet->getProtection()->getFormatRows()            'true' 'false'));
  421.         $objWriter->writeAttribute('insertColumns',        ($pSheet->getProtection()->getInsertColumns()        'true' 'false'));
  422.         $objWriter->writeAttribute('insertRows',            ($pSheet->getProtection()->getInsertRows()            'true' 'false'));
  423.         $objWriter->writeAttribute('insertHyperlinks',        ($pSheet->getProtection()->getInsertHyperlinks()    'true' 'false'));
  424.         $objWriter->writeAttribute('deleteColumns',        ($pSheet->getProtection()->getDeleteColumns()        'true' 'false'));
  425.         $objWriter->writeAttribute('deleteRows',            ($pSheet->getProtection()->getDeleteRows()            'true' 'false'));
  426.         $objWriter->writeAttribute('selectLockedCells',    ($pSheet->getProtection()->getSelectLockedCells()    'true' 'false'));
  427.         $objWriter->writeAttribute('sort',                    ($pSheet->getProtection()->getSort()                'true' 'false'));
  428.         $objWriter->writeAttribute('autoFilter',            ($pSheet->getProtection()->getAutoFilter()            'true' 'false'));
  429.         $objWriter->writeAttribute('pivotTables',            ($pSheet->getProtection()->getPivotTables()        'true' 'false'));
  430.         $objWriter->writeAttribute('selectUnlockedCells',    ($pSheet->getProtection()->getSelectUnlockedCells()    'true' 'false'));
  431.         $objWriter->endElement();
  432.     }
  433.  
  434.     /**
  435.      * Write ConditionalFormatting
  436.      *
  437.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  438.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  439.      * @throws    Exception
  440.      */
  441.     private function _writeConditionalFormatting(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  442.     {
  443.         // Conditional id
  444.         $id 1;
  445.  
  446.         // Loop through styles in the current worksheet
  447.         foreach ($pSheet->getConditionalStylesCollection(as $cellCoordinate => $conditionalStyles{
  448.             foreach ($conditionalStyles as $conditional{
  449.                 // WHY was this again?
  450.                 // if ($this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode( $conditional->getHashCode() ) == '') {
  451.                 //    continue;
  452.                 // }
  453.  
  454.                 if ($conditional->getConditionType(!= PHPExcel_Style_Conditional::CONDITION_NONE{
  455.                     // conditionalFormatting
  456.                     $objWriter->startElement('conditionalFormatting');
  457.                     $objWriter->writeAttribute('sqref',    $cellCoordinate);
  458.  
  459.                         // cfRule
  460.                         $objWriter->startElement('cfRule');
  461.                         $objWriter->writeAttribute('type',        $conditional->getConditionType());
  462.                         $objWriter->writeAttribute('dxfId',        $this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode$conditional->getHashCode() ));
  463.                         $objWriter->writeAttribute('priority',    $id++);
  464.  
  465.                         if (($conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CELLIS
  466.                                 ||
  467.                              $conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT)
  468.                             && $conditional->getOperatorType(!= PHPExcel_Style_Conditional::OPERATOR_NONE{
  469.                             $objWriter->writeAttribute('operator',    $conditional->getOperatorType());
  470.                         }
  471.  
  472.                         if ($conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
  473.                             && !is_null($conditional->getText())) {
  474.                             $objWriter->writeAttribute('text',    $conditional->getText());
  475.                         }
  476.  
  477.                         if ($conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
  478.                             && $conditional->getOperatorType(== PHPExcel_Style_Conditional::OPERATOR_CONTAINSTEXT
  479.                             && !is_null($conditional->getText())) {
  480.                             $objWriter->writeElement('formula',    'NOT(ISERROR(SEARCH("' $conditional->getText('",' $cellCoordinate ')))');
  481.                         else if ($conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
  482.                             && $conditional->getOperatorType(== PHPExcel_Style_Conditional::OPERATOR_BEGINSWITH
  483.                             && !is_null($conditional->getText())) {
  484.                             $objWriter->writeElement('formula',    'LEFT(' $cellCoordinate ',' strlen($conditional->getText()) ')="' $conditional->getText('"');
  485.                         else if ($conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
  486.                             && $conditional->getOperatorType(== PHPExcel_Style_Conditional::OPERATOR_ENDSWITH
  487.                             && !is_null($conditional->getText())) {
  488.                             $objWriter->writeElement('formula',    'RIGHT(' $cellCoordinate ',' strlen($conditional->getText()) ')="' $conditional->getText('"');
  489.                         else if ($conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
  490.                             && $conditional->getOperatorType(== PHPExcel_Style_Conditional::OPERATOR_NOTCONTAINS
  491.                             && !is_null($conditional->getText())) {
  492.                             $objWriter->writeElement('formula',    'ISERROR(SEARCH("' $conditional->getText('",' $cellCoordinate '))');
  493.                         else if ($conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CELLIS
  494.                             || $conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT
  495.                             || $conditional->getConditionType(== PHPExcel_Style_Conditional::CONDITION_EXPRESSION{
  496.                             foreach ($conditional->getConditions(as $formula{
  497.                                 // Formula
  498.                                 $objWriter->writeElement('formula',    $formula);
  499.                             }
  500.                         }
  501.  
  502.                         $objWriter->endElement();
  503.  
  504.                     $objWriter->endElement();
  505.                 }
  506.             }
  507.         }
  508.     }
  509.  
  510.     /**
  511.      * Write DataValidations
  512.      *
  513.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  514.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  515.      * @throws    Exception
  516.      */
  517.     private function _writeDataValidations(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  518.     {
  519.         // Datavalidation collection
  520.         $dataValidationCollection $pSheet->getDataValidationCollection();
  521.  
  522.         // Write data validations?
  523.         if (count($dataValidationCollection0{
  524.             $objWriter->startElement('dataValidations');
  525.             $objWriter->writeAttribute('count'count($dataValidationCollection));
  526.  
  527.             foreach ($dataValidationCollection as $coordinate => $dv{
  528.                 $objWriter->startElement('dataValidation');
  529.  
  530.                 if ($dv->getType(!= ''{
  531.                     $objWriter->writeAttribute('type'$dv->getType());
  532.                 }
  533.  
  534.                 if ($dv->getErrorStyle(!= ''{
  535.                     $objWriter->writeAttribute('errorStyle'$dv->getErrorStyle());
  536.                 }
  537.  
  538.                 if ($dv->getOperator(!= ''{
  539.                     $objWriter->writeAttribute('operator'$dv->getOperator());
  540.                 }
  541.  
  542.                 $objWriter->writeAttribute('allowBlank',        ($dv->getAllowBlank()        '1'  '0'));
  543.                 $objWriter->writeAttribute('showDropDown',        (!$dv->getShowDropDown()    '1'  '0'));
  544.                 $objWriter->writeAttribute('showInputMessage',    ($dv->getShowInputMessage()    '1'  '0'));
  545.                 $objWriter->writeAttribute('showErrorMessage',    ($dv->getShowErrorMessage()    '1'  '0'));
  546.  
  547.                 if ($dv->getErrorTitle(!== ''{
  548.                     $objWriter->writeAttribute('errorTitle'$dv->getErrorTitle());
  549.                 }
  550.                 if ($dv->getError(!== ''{
  551.                     $objWriter->writeAttribute('error'$dv->getError());
  552.                 }
  553.                 if ($dv->getPromptTitle(!== ''{
  554.                     $objWriter->writeAttribute('promptTitle'$dv->getPromptTitle());
  555.                 }
  556.                 if ($dv->getPrompt(!== ''{
  557.                     $objWriter->writeAttribute('prompt'$dv->getPrompt());
  558.                 }
  559.  
  560.                 $objWriter->writeAttribute('sqref'$coordinate);
  561.  
  562.                 if ($dv->getFormula1(!== ''{
  563.                     $objWriter->writeElement('formula1'$dv->getFormula1());
  564.                 }
  565.                 if ($dv->getFormula2(!== ''{
  566.                     $objWriter->writeElement('formula2'$dv->getFormula2());
  567.                 }
  568.  
  569.                 $objWriter->endElement();
  570.             }
  571.  
  572.             $objWriter->endElement();
  573.         }
  574.     }
  575.  
  576.     /**
  577.      * Write Hyperlinks
  578.      *
  579.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  580.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  581.      * @throws    Exception
  582.      */
  583.     private function _writeHyperlinks(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  584.     {
  585.         // Hyperlink collection
  586.         $hyperlinkCollection $pSheet->getHyperlinkCollection();
  587.  
  588.         // Relation ID
  589.         $relationId 1;
  590.  
  591.         // Write hyperlinks?
  592.         if (count($hyperlinkCollection0{
  593.             $objWriter->startElement('hyperlinks');
  594.  
  595.             foreach ($hyperlinkCollection as $coordinate => $hyperlink{
  596.                 $objWriter->startElement('hyperlink');
  597.  
  598.                 $objWriter->writeAttribute('ref'$coordinate);
  599.                 if (!$hyperlink->isInternal()) {
  600.                     $objWriter->writeAttribute('r:id',    'rId_hyperlink_' $relationId);
  601.                     ++$relationId;
  602.                 else {
  603.                     $objWriter->writeAttribute('location',    str_replace('sheet://'''$hyperlink->getUrl()));
  604.                 }
  605.  
  606.                 if ($hyperlink->getTooltip(!= ''{
  607.                     $objWriter->writeAttribute('tooltip'$hyperlink->getTooltip());
  608.                 }
  609.  
  610.                 $objWriter->endElement();
  611.             }
  612.  
  613.             $objWriter->endElement();
  614.         }
  615.     }
  616.  
  617.     /**
  618.      * Write ProtectedRanges
  619.      *
  620.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  621.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  622.      * @throws    Exception
  623.      */
  624.     private function _writeProtectedRanges(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  625.     {
  626.         if (count($pSheet->getProtectedCells()) 0{
  627.             // protectedRanges
  628.             $objWriter->startElement('protectedRanges');
  629.  
  630.                 // Loop protectedRanges
  631.                 foreach ($pSheet->getProtectedCells(as $protectedCell => $passwordHash{
  632.                     // protectedRange
  633.                     $objWriter->startElement('protectedRange');
  634.                     $objWriter->writeAttribute('name',        'p' md5($protectedCell));
  635.                     $objWriter->writeAttribute('sqref',    $protectedCell);
  636.                     $objWriter->writeAttribute('password',    $passwordHash);
  637.                     $objWriter->endElement();
  638.                 }
  639.  
  640.             $objWriter->endElement();
  641.         }
  642.     }
  643.  
  644.     /**
  645.      * Write MergeCells
  646.      *
  647.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  648.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  649.      * @throws    Exception
  650.      */
  651.     private function _writeMergeCells(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  652.     {
  653.         if (count($pSheet->getMergeCells()) 0{
  654.             // mergeCells
  655.             $objWriter->startElement('mergeCells');
  656.  
  657.                 // Loop mergeCells
  658.                 foreach ($pSheet->getMergeCells(as $mergeCell{
  659.                     // mergeCell
  660.                     $objWriter->startElement('mergeCell');
  661.                     $objWriter->writeAttribute('ref'$mergeCell);
  662.                     $objWriter->endElement();
  663.                 }
  664.  
  665.             $objWriter->endElement();
  666.         }
  667.     }
  668.  
  669.     /**
  670.      * Write PrintOptions
  671.      *
  672.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  673.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  674.      * @throws    Exception
  675.      */
  676.     private function _writePrintOptions(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  677.     {
  678.         // printOptions
  679.         $objWriter->startElement('printOptions');
  680.  
  681.         $objWriter->writeAttribute('gridLines',    ($pSheet->getPrintGridlines('true''false'));
  682.         $objWriter->writeAttribute('gridLinesSet',    'true');
  683.  
  684.         if ($pSheet->getPageSetup()->getHorizontalCentered()) {
  685.             $objWriter->writeAttribute('horizontalCentered''true');
  686.         }
  687.  
  688.         if ($pSheet->getPageSetup()->getVerticalCentered()) {
  689.             $objWriter->writeAttribute('verticalCentered''true');
  690.         }
  691.  
  692.         $objWriter->endElement();
  693.     }
  694.  
  695.     /**
  696.      * Write PageMargins
  697.      *
  698.      * @param    PHPExcel_Shared_XMLWriter                $objWriter        XML Writer
  699.      * @param    PHPExcel_Worksheet                        $pSheet            Worksheet
  700.      * @throws    Exception
  701.      */
  702.     private function _writePageMargins(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  703.     {
  704.         // pageMargins
  705.         $objWriter->startElement('pageMargins');
  706.         $objWriter->writeAttribute('left',        PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getLeft()));
  707.         $objWriter->writeAttribute('right',        PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getRight()));
  708.         $objWriter->writeAttribute('top',        PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getTop()));
  709.         $objWriter->writeAttribute('bottom',    PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getBottom()));
  710.         $objWriter->writeAttribute('header',    PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getHeader()));
  711.         $objWriter->writeAttribute('footer',    PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getFooter()));
  712.         $objWriter->endElement();
  713.     }
  714.  
  715.     /**
  716.      * Write AutoFilter
  717.      *
  718.      * @param    PHPExcel_Shared_XMLWriter                $objWriter        XML Writer
  719.      * @param    PHPExcel_Worksheet                        $pSheet            Worksheet
  720.      * @throws    Exception
  721.      */
  722.     private function _writeAutoFilter(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  723.     {
  724.         if ($pSheet->getAutoFilter(!= ''{
  725.             // autoFilter
  726.             $objWriter->startElement('autoFilter');
  727.             $objWriter->writeAttribute('ref',        $pSheet->getAutoFilter());
  728.             $objWriter->endElement();
  729.         }
  730.     }
  731.  
  732.     /**
  733.      * Write PageSetup
  734.      *
  735.      * @param    PHPExcel_Shared_XMLWriter            $objWriter        XML Writer
  736.      * @param    PHPExcel_Worksheet                    $pSheet            Worksheet
  737.      * @throws    Exception
  738.      */
  739.     private function _writePageSetup(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  740.     {
  741.         // pageSetup
  742.         $objWriter->startElement('pageSetup');
  743.         $objWriter->writeAttribute('paperSize',        $pSheet->getPageSetup()->getPaperSize());
  744.         $objWriter->writeAttribute('orientation',    $pSheet->getPageSetup()->getOrientation());
  745.  
  746.         if (!is_null($pSheet->getPageSetup()->getScale())) {
  747.             $objWriter->writeAttribute('scale',                 $pSheet->getPageSetup()->getScale());
  748.         }
  749.         if (!is_null($pSheet->getPageSetup()->getFitToHeight())) {
  750.             $objWriter->writeAttribute('fitToHeight',         $pSheet->getPageSetup()->getFitToHeight());
  751.         else {
  752.             $objWriter->writeAttribute('fitToHeight',         '0');
  753.         }
  754.         if (!is_null($pSheet->getPageSetup()->getFitToWidth())) {
  755.             $objWriter->writeAttribute('fitToWidth',         $pSheet->getPageSetup()->getFitToWidth());
  756.         else {
  757.             $objWriter->writeAttribute('fitToWidth',         '0');
  758.         }
  759.         if (!is_null($pSheet->getPageSetup()->getFirstPageNumber())) {
  760.             $objWriter->writeAttribute('firstPageNumber',    $pSheet->getPageSetup()->getFirstPageNumber());
  761.             $objWriter->writeAttribute('useFirstPageNumber''1');
  762.         }
  763.  
  764.         $objWriter->endElement();
  765.     }
  766.  
  767.     /**
  768.      * Write Header / Footer
  769.      *
  770.      * @param    PHPExcel_Shared_XMLWriter        $objWriter        XML Writer
  771.      * @param    PHPExcel_Worksheet                $pSheet            Worksheet
  772.      * @throws    Exception
  773.      */
  774.     private function _writeHeaderFooter(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  775.     {
  776.         // headerFooter
  777.         $objWriter->startElement('headerFooter');
  778.         $objWriter->writeAttribute('differentOddEven',    ($pSheet->getHeaderFooter()->getDifferentOddEven('true' 'false'));
  779.         $objWriter->writeAttribute('differentFirst',    ($pSheet->getHeaderFooter()->getDifferentFirst('true' 'false'));
  780.         $objWriter->writeAttribute('scaleWithDoc',        ($pSheet->getHeaderFooter()->getScaleWithDocument('true' 'false'));
  781.         $objWriter->writeAttribute('alignWithMargins',    ($pSheet->getHeaderFooter()->getAlignWithMargins('true' 'false'));
  782.  
  783.             $objWriter->writeElement('oddHeader',        $pSheet->getHeaderFooter()->getOddHeader());
  784.             $objWriter->writeElement('oddFooter',        $pSheet->getHeaderFooter()->getOddFooter());
  785.             $objWriter->writeElement('evenHeader',        $pSheet->getHeaderFooter()->getEvenHeader());
  786.             $objWriter->writeElement('evenFooter',        $pSheet->getHeaderFooter()->getEvenFooter());
  787.             $objWriter->writeElement('firstHeader',    $pSheet->getHeaderFooter()->getFirstHeader());
  788.             $objWriter->writeElement('firstFooter',    $pSheet->getHeaderFooter()->getFirstFooter());
  789.         $objWriter->endElement();
  790.     }
  791.  
  792.     /**
  793.      * Write Breaks
  794.      *
  795.      * @param    PHPExcel_Shared_XMLWriter        $objWriter        XML Writer
  796.      * @param    PHPExcel_Worksheet                $pSheet            Worksheet
  797.      * @throws    Exception
  798.      */
  799.     private function _writeBreaks(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  800.     {
  801.         // Get row and column breaks
  802.         $aRowBreaks array();
  803.         $aColumnBreaks array();
  804.         foreach ($pSheet->getBreaks(as $cell => $breakType{
  805.             if ($breakType == PHPExcel_Worksheet::BREAK_ROW{
  806.                 $aRowBreaks[$cell;
  807.             else if ($breakType == PHPExcel_Worksheet::BREAK_COLUMN{
  808.                 $aColumnBreaks[$cell;
  809.             }
  810.         }
  811.  
  812.         // rowBreaks
  813.         if (count($aRowBreaks0{
  814.             $objWriter->startElement('rowBreaks');
  815.             $objWriter->writeAttribute('count',            count($aRowBreaks));
  816.             $objWriter->writeAttribute('manualBreakCount',    count($aRowBreaks));
  817.  
  818.                 foreach ($aRowBreaks as $cell{
  819.                     $coords PHPExcel_Cell::coordinateFromString($cell);
  820.  
  821.                     $objWriter->startElement('brk');
  822.                     $objWriter->writeAttribute('id',    $coords[1]);
  823.                     $objWriter->writeAttribute('man',    '1');
  824.                     $objWriter->endElement();
  825.                 }
  826.  
  827.             $objWriter->endElement();
  828.         }
  829.  
  830.         // Second, write column breaks
  831.         if (count($aColumnBreaks0{
  832.             $objWriter->startElement('colBreaks');
  833.             $objWriter->writeAttribute('count',            count($aColumnBreaks));
  834.             $objWriter->writeAttribute('manualBreakCount',    count($aColumnBreaks));
  835.  
  836.                 foreach ($aColumnBreaks as $cell{
  837.                     $coords PHPExcel_Cell::coordinateFromString($cell);
  838.  
  839.                     $objWriter->startElement('brk');
  840.                     $objWriter->writeAttribute('id',    PHPExcel_Cell::columnIndexFromString($coords[0]1);
  841.                     $objWriter->writeAttribute('man',    '1');
  842.                     $objWriter->endElement();
  843.                 }
  844.  
  845.             $objWriter->endElement();
  846.         }
  847.     }
  848.  
  849.     /**
  850.      * Write SheetData
  851.      *
  852.      * @param    PHPExcel_Shared_XMLWriter        $objWriter        XML Writer
  853.      * @param    PHPExcel_Worksheet                $pSheet            Worksheet
  854.      * @param    string[]                        $pStringTable    String table
  855.      * @throws    Exception
  856.      */
  857.     private function _writeSheetData(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null$pStringTable null)
  858.     {
  859.         if (is_array($pStringTable)) {
  860.             // Flipped stringtable, for faster index searching
  861.             $aFlippedStringTable $this->getParentWriter()->getWriterPart('stringtable')->flipStringTable($pStringTable);
  862.  
  863.             // sheetData
  864.             $objWriter->startElement('sheetData');
  865.  
  866.                 // Get column count
  867.                 $colCount PHPExcel_Cell::columnIndexFromString($pSheet->getHighestColumn());
  868.  
  869.                 // Highest row number
  870.                 $highestRow $pSheet->getHighestRow();
  871.  
  872.                 // Loop through cells
  873.                 $cellsByRow array();
  874.                 foreach ($pSheet->getCellCollection(as $cellID{
  875.                     $cellAddress PHPExcel_Cell::coordinateFromString($cellID);
  876.                     $cellsByRow[$cellAddress[1]][$cellID;
  877.                 }
  878.  
  879.                 $currentRow 0;
  880.                 while($currentRow++ < $highestRow{
  881.                     // Get row dimension
  882.                     $rowDimension $pSheet->getRowDimension($currentRow);
  883.  
  884.                     // Write current row?
  885.                     $writeCurrentRow =    isset($cellsByRow[$currentRow]||
  886.                                         $rowDimension->getRowHeight(>= ||
  887.                                         $rowDimension->getVisible(== false ||
  888.                                         $rowDimension->getCollapsed(== true ||
  889.                                         $rowDimension->getOutlineLevel(||
  890.                                         $rowDimension->getXfIndex(!== null;
  891.  
  892.                     if ($writeCurrentRow{
  893.                         // Start a new row
  894.                         $objWriter->startElement('row');
  895.                         $objWriter->writeAttribute('r',    $currentRow);
  896.                         $objWriter->writeAttribute('spans',    '1:' $colCount);
  897.  
  898.                         // Row dimensions
  899.                         if ($rowDimension->getRowHeight(>= 0{
  900.                             $objWriter->writeAttribute('customHeight',    '1');
  901.                             $objWriter->writeAttribute('ht',            PHPExcel_Shared_String::FormatNumber($rowDimension->getRowHeight()));
  902.                         }
  903.  
  904.                         // Row visibility
  905.                         if ($rowDimension->getVisible(== false{
  906.                             $objWriter->writeAttribute('hidden',        'true');
  907.                         }
  908.  
  909.                         // Collapsed
  910.                         if ($rowDimension->getCollapsed(== true{
  911.                             $objWriter->writeAttribute('collapsed',        'true');
  912.                         }
  913.  
  914.                         // Outline level
  915.                         if ($rowDimension->getOutlineLevel(0{
  916.                             $objWriter->writeAttribute('outlineLevel',    $rowDimension->getOutlineLevel());
  917.                         }
  918.  
  919.                         // Style
  920.                         if ($rowDimension->getXfIndex(!== null{
  921.                             $objWriter->writeAttribute('s',    $rowDimension->getXfIndex());
  922.                             $objWriter->writeAttribute('customFormat''1');
  923.                         }
  924.  
  925.                         // Write cells
  926.                         if (isset($cellsByRow[$currentRow])) {
  927.                             foreach($cellsByRow[$currentRowas $cellAddress{
  928.                                 // Write cell
  929.                                 $this->_writeCell($objWriter$pSheet$cellAddress$pStringTable$aFlippedStringTable);
  930.                             }
  931.                         }
  932.  
  933.                         // End row
  934.                         $objWriter->endElement();
  935.                     }
  936.                 }
  937.  
  938.             $objWriter->endElement();
  939.         else {
  940.             throw new Exception("Invalid parameters passed.");
  941.         }
  942.     }
  943.  
  944.     /**
  945.      * Write Cell
  946.      *
  947.      * @param    PHPExcel_Shared_XMLWriter    $objWriter                XML Writer
  948.      * @param    PHPExcel_Worksheet            $pSheet                    Worksheet
  949.      * @param    PHPExcel_Cell                $pCell                    Cell
  950.      * @param    string[]                    $pStringTable            String table
  951.      * @param    string[]                    $pFlippedStringTable    String table (flipped), for faster index searching
  952.      * @throws    Exception
  953.      */
  954.     private function _writeCell(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null$pCellAddress null$pStringTable null$pFlippedStringTable null)
  955.     {
  956.         if (is_array($pStringTable&& is_array($pFlippedStringTable)) {
  957.             // Cell
  958.             $pCell $pSheet->getCell($pCellAddress);
  959.             $objWriter->startElement('c');
  960.             $objWriter->writeAttribute('r'$pCellAddress);
  961.  
  962.             // Sheet styles
  963.             if ($pCell->getXfIndex(!= ''{
  964.                 $objWriter->writeAttribute('s'$pCell->getXfIndex());
  965.             }
  966.  
  967.             // If cell value is supplied, write cell value
  968.             $cellValue $pCell->getValue();
  969.             if (is_object($cellValue|| $cellValue !== ''{
  970.                 // Map type
  971.                 $mappedType $pCell->getDataType();
  972.  
  973.                 // Write data type depending on its type
  974.                 switch (strtolower($mappedType)) {
  975.                     case 'inlinestr':    // Inline string
  976.                     case 's':            // String
  977.                     case 'b':            // Boolean
  978.                         $objWriter->writeAttribute('t'$mappedType);
  979.                         break;
  980.                     case 'f':            // Formula
  981.                         $calculatedValue null;
  982.                         if ($this->getParentWriter()->getPreCalculateFormulas()) {
  983.                             $calculatedValue $pCell->getCalculatedValue();
  984.                         else {
  985.                             $calculatedValue $cellValue;
  986.                         }
  987.                         if (is_string($calculatedValue)) {
  988.                             $objWriter->writeAttribute('t''str');
  989.                         }
  990.                         break;
  991.                     case 'e':            // Error
  992.                         $objWriter->writeAttribute('t'$mappedType);
  993.                 }
  994.  
  995.                 // Write data depending on its type
  996.                 switch (strtolower($mappedType)) {
  997.                     case 'inlinestr':    // Inline string
  998.                         if ($cellValue instanceof PHPExcel_RichText{
  999.                             $objWriter->writeElement('t'PHPExcel_Shared_String::ControlCharacterPHP2OOXMLhtmlspecialchars($cellValue) ) );
  1000.                         else if ($cellValue instanceof PHPExcel_RichText{
  1001.                             $objWriter->startElement('is');
  1002.                             $this->getParentWriter()->getWriterPart('stringtable')->writeRichText($objWriter$cellValue);
  1003.                             $objWriter->endElement();
  1004.                         }
  1005.  
  1006.                         break;
  1007.                     case 's':            // String
  1008.                         if ($cellValue instanceof PHPExcel_RichText{
  1009.                             if (isset($pFlippedStringTable[$cellValue])) {
  1010.                                 $objWriter->writeElement('v'$pFlippedStringTable[$cellValue]);
  1011.                             }
  1012.                         else if ($cellValue instanceof PHPExcel_RichText{
  1013.                             $objWriter->writeElement('v'$pFlippedStringTable[$cellValue->getHashCode()]);
  1014.                         }
  1015.  
  1016.                         break;
  1017.                     case 'f':            // Formula
  1018.                         $attributes $pCell->getFormulaAttributes();
  1019.                         if($attributes['t'== 'array'{
  1020.                             $objWriter->startElement('f');
  1021.                             $objWriter->writeAttribute('t''array');
  1022.                             $objWriter->writeAttribute('ref'$pCellAddress);
  1023.                             $objWriter->writeAttribute('aca''1');
  1024.                             $objWriter->writeAttribute('ca''1');
  1025.                             $objWriter->text(substr($cellValue1));
  1026.                             $objWriter->endElement();
  1027.                         else {
  1028.                             $objWriter->writeElement('f'substr($cellValue1));
  1029.                         }
  1030.                         if ($this->getParentWriter()->getOffice2003Compatibility(=== false{
  1031.                             if ($this->getParentWriter()->getPreCalculateFormulas()) {
  1032.                                 $calculatedValue $pCell->getCalculatedValue();
  1033.                                 if (!is_array($calculatedValue&& substr($calculatedValue01!= '#'{
  1034.                                     $objWriter->writeElement('v'PHPExcel_Shared_String::FormatNumber($calculatedValue));
  1035.                                 else {
  1036.                                     $objWriter->writeElement('v''0');
  1037.                                 }
  1038.                             else {
  1039.                                 $objWriter->writeElement('v''0');
  1040.                             }
  1041.                         }
  1042.                         break;
  1043.                     case 'n':            // Numeric
  1044.                         // force point as decimal separator in case current locale uses comma
  1045.                         $objWriter->writeElement('v'str_replace(',''.'$cellValue));
  1046.                         break;
  1047.                     case 'b':            // Boolean
  1048.                         $objWriter->writeElement('v'($cellValue '1' '0'));
  1049.                         break;
  1050.                     case 'e':            // Error
  1051.                         if (substr($cellValue01== '='{
  1052.                             $objWriter->writeElement('f'substr($cellValue1));
  1053.                             $objWriter->writeElement('v'substr($cellValue1));
  1054.                         else {
  1055.                             $objWriter->writeElement('v'$cellValue);
  1056.                         }
  1057.  
  1058.                         break;
  1059.                 }
  1060.             }
  1061.  
  1062.             $objWriter->endElement();
  1063.         else {
  1064.             throw new Exception("Invalid parameters passed.");
  1065.         }
  1066.     }
  1067.  
  1068.     /**
  1069.      * Write Drawings
  1070.      *
  1071.      * @param    PHPExcel_Shared_XMLWriter        $objWriter        XML Writer
  1072.      * @param    PHPExcel_Worksheet                $pSheet            Worksheet
  1073.      * @throws    Exception
  1074.      */
  1075.     private function _writeDrawings(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  1076.     {
  1077.         // If sheet contains drawings, add the relationships
  1078.         if ($pSheet->getDrawingCollection()->count(0{
  1079.             $objWriter->startElement('drawing');
  1080.             $objWriter->writeAttribute('r:id''rId1');
  1081.             $objWriter->endElement();
  1082.         }
  1083.     }
  1084.  
  1085.     /**
  1086.      * Write LegacyDrawing
  1087.      *
  1088.      * @param    PHPExcel_Shared_XMLWriter        $objWriter        XML Writer
  1089.      * @param    PHPExcel_Worksheet                $pSheet            Worksheet
  1090.      * @throws    Exception
  1091.      */
  1092.     private function _writeLegacyDrawing(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  1093.     {
  1094.         // If sheet contains comments, add the relationships
  1095.         if (count($pSheet->getComments()) 0{
  1096.             $objWriter->startElement('legacyDrawing');
  1097.             $objWriter->writeAttribute('r:id''rId_comments_vml1');
  1098.             $objWriter->endElement();
  1099.         }
  1100.     }
  1101.  
  1102.     /**
  1103.      * Write LegacyDrawingHF
  1104.      *
  1105.      * @param    PHPExcel_Shared_XMLWriter        $objWriter        XML Writer
  1106.      * @param    PHPExcel_Worksheet                $pSheet            Worksheet
  1107.      * @throws    Exception
  1108.      */
  1109.     private function _writeLegacyDrawingHF(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Worksheet $pSheet null)
  1110.     {
  1111.         // If sheet contains comments, add the relationships
  1112.         if (count($pSheet->getHeaderFooter()->getImages()) 0{
  1113.             $objWriter->startElement('legacyDrawingHF');
  1114.             $objWriter->writeAttribute('r:id''rId_headerfooter_vml1');
  1115.             $objWriter->endElement();
  1116.         }
  1117.     }
  1118. }

Documentation generated on Sun, 27 Feb 2011 16:37:26 -0800 by phpDocumentor 1.4.3