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

Documentation generated on Mon, 05 Jan 2009 20:38:51 +0100 by phpDocumentor 1.4.1