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

Documentation generated on Mon, 27 Oct 2008 08:42:02 +0100 by phpDocumentor 1.4.1