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

Source for file Style.php

Documentation is available at Style.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.7, 2009-04-22
  26.  */
  27.  
  28.  
  29. /** PHPExcel */
  30. require_once 'PHPExcel.php';
  31.  
  32. /** PHPExcel_Writer_Excel2007 */
  33. require_once 'PHPExcel/Writer/Excel2007.php';
  34.  
  35. /** PHPExcel_Writer_Excel2007_WriterPart */
  36. require_once 'PHPExcel/Writer/Excel2007/WriterPart.php';
  37.  
  38. /** PHPExcel_Style */
  39. require_once 'PHPExcel/Style.php';
  40.  
  41. /** PHPExcel_Style_Borders */
  42. require_once 'PHPExcel/Style/Borders.php';
  43.  
  44. /** PHPExcel_Style_Border */
  45. require_once 'PHPExcel/Style/Border.php';
  46.  
  47. /** PHPExcel_Style_Color */
  48. require_once 'PHPExcel/Style/Color.php';
  49.  
  50. /** PHPExcel_Style_Fill */
  51. require_once 'PHPExcel/Style/Fill.php';
  52.  
  53. /** PHPExcel_Style_Font */
  54. require_once 'PHPExcel/Style/Font.php';
  55.  
  56. /** PHPExcel_Style_NumberFormat */
  57. require_once 'PHPExcel/Style/NumberFormat.php';
  58.  
  59. /** PHPExcel_Style_Conditional */
  60. require_once 'PHPExcel/Style/Conditional.php';
  61.  
  62. /** PHPExcel_Style_Protection */
  63. require_once 'PHPExcel/Style/Protection.php';
  64.  
  65. /** PHPExcel_Shared_XMLWriter */
  66. require_once 'PHPExcel/Shared/XMLWriter.php';
  67.  
  68.  
  69. /**
  70.  * PHPExcel_Writer_Excel2007_Style
  71.  *
  72.  * @category   PHPExcel
  73.  * @package    PHPExcel_Writer_Excel2007
  74.  * @copyright  Copyright (c) 2006 - 2009 PHPExcel (http://www.codeplex.com/PHPExcel)
  75.  */
  76. {
  77.     /**
  78.      * Write styles to XML format
  79.      *
  80.      * @param     PHPExcel    $pPHPExcel 
  81.      * @return     string         XML Output
  82.      * @throws     Exception
  83.      */
  84.     public function writeStyles(PHPExcel $pPHPExcel null)
  85.     {
  86.         // Create XML writer
  87.         $objWriter null;
  88.         if ($this->getParentWriter()->getUseDiskCaching()) {
  89.             $objWriter new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK$this->getParentWriter()->getDiskCachingDirectory());
  90.         else {
  91.             $objWriter new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
  92.         }
  93.  
  94.         // XML header
  95.         $objWriter->startDocument('1.0','UTF-8','yes');
  96.  
  97.         // styleSheet
  98.         $objWriter->startElement('styleSheet');
  99.         $objWriter->writeAttribute('xml:space''preserve');
  100.         $objWriter->writeAttribute('xmlns''http://schemas.openxmlformats.org/spreadsheetml/2006/main');
  101.  
  102.             // numFmts
  103.             $objWriter->startElement('numFmts');
  104.             $objWriter->writeAttribute('count'$this->getParentWriter()->getNumFmtHashTable()->count());
  105.  
  106.                 // numFmt
  107.                 for ($i 0$i $this->getParentWriter()->getNumFmtHashTable()->count()++$i{
  108.                     $this->_writeNumFmt($objWriter$this->getParentWriter()->getNumFmtHashTable()->getByIndex($i)$i);
  109.                 }
  110.  
  111.             $objWriter->endElement();
  112.  
  113.             // fonts
  114.             $objWriter->startElement('fonts');
  115.             $objWriter->writeAttribute('count'$this->getParentWriter()->getFontHashTable()->count());
  116.  
  117.                 // font
  118.                 for ($i 0$i $this->getParentWriter()->getFontHashTable()->count()++$i{
  119.                     $this->_writeFont($objWriter$this->getParentWriter()->getFontHashTable()->getByIndex($i));
  120.                 }
  121.  
  122.             $objWriter->endElement();
  123.  
  124.             // fills
  125.             $objWriter->startElement('fills');
  126.             $objWriter->writeAttribute('count'$this->getParentWriter()->getFillHashTable()->count());
  127.  
  128.                 // fill
  129.                 for ($i 0$i $this->getParentWriter()->getFillHashTable()->count()++$i{
  130.                     $this->_writeFill($objWriter$this->getParentWriter()->getFillHashTable()->getByIndex($i));
  131.                 }
  132.  
  133.             $objWriter->endElement();
  134.  
  135.             // borders
  136.             $objWriter->startElement('borders');
  137.             $objWriter->writeAttribute('count'$this->getParentWriter()->getBordersHashTable()->count());
  138.  
  139.                 // border
  140.                 for ($i 0$i $this->getParentWriter()->getBordersHashTable()->count()++$i{
  141.                     $this->_writeBorder($objWriter$this->getParentWriter()->getBordersHashTable()->getByIndex($i));
  142.                 }
  143.  
  144.             $objWriter->endElement();
  145.  
  146.             // cellStyleXfs
  147.             $objWriter->startElement('cellStyleXfs');
  148.             $objWriter->writeAttribute('count'$this->getParentWriter()->getStylesHashTable()->count());
  149.  
  150.                 // xf
  151.                 $objWriter->startElement('xf');
  152.                     $objWriter->writeAttribute('numFmtId',     0);
  153.                     $objWriter->writeAttribute('fontId',     0);
  154.                     $objWriter->writeAttribute('fillId',     0);
  155.                     $objWriter->writeAttribute('borderId',    0);
  156.                 $objWriter->endElement();
  157.  
  158.             $objWriter->endElement();
  159.  
  160.             // cellXfs
  161.             $objWriter->startElement('cellXfs');
  162.             $objWriter->writeAttribute('count'$this->getParentWriter()->getStylesHashTable()->count());
  163.  
  164.                 // xf
  165.                 for ($i 0$i $this->getParentWriter()->getStylesHashTable()->count()++$i{
  166.                     $this->_writeCellStyleXf($objWriter$this->getParentWriter()->getStylesHashTable()->getByIndex($i));
  167.                 }
  168.  
  169.             $objWriter->endElement();
  170.  
  171.             // cellStyles
  172.             $objWriter->startElement('cellStyles');
  173.             $objWriter->writeAttribute('count'1);
  174.  
  175.                 // cellStyle
  176.                 $objWriter->startElement('cellStyle');
  177.                     $objWriter->writeAttribute('name',         'Normal');
  178.                     $objWriter->writeAttribute('xfId',         0);
  179.                     $objWriter->writeAttribute('builtinId',    0);
  180.                 $objWriter->endElement();
  181.  
  182.             $objWriter->endElement();
  183.  
  184.             // dxfs
  185.             $objWriter->startElement('dxfs');
  186.             $objWriter->writeAttribute('count'$this->getParentWriter()->getStylesConditionalHashTable()->count());
  187.  
  188.                 // dxf
  189.                 for ($i 0$i $this->getParentWriter()->getStylesConditionalHashTable()->count()++$i{
  190.                     $this->_writeCellStyleDxf($objWriter$this->getParentWriter()->getStylesConditionalHashTable()->getByIndex($i)->getStyle());
  191.                 }
  192.  
  193.             $objWriter->endElement();
  194.  
  195.             // tableStyles
  196.             $objWriter->startElement('tableStyles');
  197.             $objWriter->writeAttribute('defaultTableStyle''TableStyleMedium9');
  198.             $objWriter->writeAttribute('defaultPivotStyle''PivotTableStyle1');
  199.             $objWriter->endElement();
  200.  
  201.         $objWriter->endElement();
  202.  
  203.         // Return
  204.         return $objWriter->getData();
  205.     }
  206.  
  207.     /**
  208.      * Write Fill
  209.      *
  210.      * @param     PHPExcel_Shared_XMLWriter     $objWriter         XML Writer
  211.      * @param     PHPExcel_Style_Fill            $pFill            Fill style
  212.      * @throws     Exception
  213.      */
  214.     private function _writeFill(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Style_Fill $pFill null)
  215.     {
  216.         // Check if this is a pattern type or gradient type
  217.         if ($pFill->getFillType(== PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR
  218.             || $pFill->getFillType(== PHPExcel_Style_Fill::FILL_GRADIENT_PATH{
  219.             // Gradient fill
  220.             $this->_writeGradientFill($objWriter$pFill);
  221.         else {
  222.             // Pattern fill
  223.             $this->_writePatternFill($objWriter$pFill);
  224.         }
  225.     }
  226.  
  227.     /**
  228.      * Write Gradient Fill
  229.      *
  230.      * @param     PHPExcel_Shared_XMLWriter     $objWriter         XML Writer
  231.      * @param     PHPExcel_Style_Fill            $pFill            Fill style
  232.      * @throws     Exception
  233.      */
  234.     private function _writeGradientFill(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Style_Fill $pFill null)
  235.     {
  236.         // fill
  237.         $objWriter->startElement('fill');
  238.  
  239.             // gradientFill
  240.             $objWriter->startElement('gradientFill');
  241.                 $objWriter->writeAttribute('type',         $pFill->getFillType());
  242.                 $objWriter->writeAttribute('degree',     $pFill->getRotation());
  243.  
  244.                 // stop
  245.                 $objWriter->startElement('stop');
  246.                 $objWriter->writeAttribute('position''0');
  247.  
  248.                     // color
  249.                     $objWriter->startElement('color');
  250.                     $objWriter->writeAttribute('rgb'$pFill->getStartColor()->getARGB());
  251.                     $objWriter->endElement();
  252.  
  253.                 $objWriter->endElement();
  254.  
  255.                 // stop
  256.                 $objWriter->startElement('stop');
  257.                 $objWriter->writeAttribute('position''1');
  258.  
  259.                     // color
  260.                     $objWriter->startElement('color');
  261.                     $objWriter->writeAttribute('rgb'$pFill->getEndColor()->getARGB());
  262.                     $objWriter->endElement();
  263.  
  264.                 $objWriter->endElement();
  265.  
  266.             $objWriter->endElement();
  267.  
  268.         $objWriter->endElement();
  269.     }
  270.  
  271.     /**
  272.      * Write Pattern Fill
  273.      *
  274.      * @param     PHPExcel_Shared_XMLWriter            $objWriter         XML Writer
  275.      * @param     PHPExcel_Style_Fill                    $pFill            Fill style
  276.      * @throws     Exception
  277.      */
  278.     private function _writePatternFill(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Style_Fill $pFill null)
  279.     {
  280.         // fill
  281.         $objWriter->startElement('fill');
  282.  
  283.             // patternFill
  284.             $objWriter->startElement('patternFill');
  285.                 $objWriter->writeAttribute('patternType'$pFill->getFillType());
  286.  
  287.                 // fgColor
  288.                 $objWriter->startElement('fgColor');
  289.                 $objWriter->writeAttribute('rgb'$pFill->getStartColor()->getARGB());
  290.                 $objWriter->endElement();
  291.  
  292.                 // bgColor
  293.                 $objWriter->startElement('bgColor');
  294.                 $objWriter->writeAttribute('rgb'$pFill->getEndColor()->getARGB());
  295.                 $objWriter->endElement();
  296.  
  297.             $objWriter->endElement();
  298.  
  299.         $objWriter->endElement();
  300.     }
  301.  
  302.     /**
  303.      * Write Font
  304.      *
  305.      * @param     PHPExcel_Shared_XMLWriter        $objWriter         XML Writer
  306.      * @param     PHPExcel_Style_Font                $pFont            Font style
  307.      * @throws     Exception
  308.      */
  309.     private function _writeFont(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Style_Font $pFont null)
  310.     {
  311.         // font
  312.         $objWriter->startElement('font');
  313.  
  314.             // Name
  315.             $objWriter->startElement('name');
  316.             $objWriter->writeAttribute('val'$pFont->getName());
  317.             $objWriter->endElement();
  318.  
  319.             // Size
  320.             $objWriter->startElement('sz');
  321.             $objWriter->writeAttribute('val'$pFont->getSize());
  322.             $objWriter->endElement();
  323.  
  324.             // Bold
  325.             if ($pFont->getBold()) {
  326.                 $objWriter->startElement('b');
  327.                 $objWriter->writeAttribute('val''true');
  328.                 $objWriter->endElement();
  329.             }
  330.  
  331.             // Italic
  332.             if ($pFont->getItalic()) {
  333.                 $objWriter->startElement('i');
  334.                 $objWriter->writeAttribute('val''true');
  335.                 $objWriter->endElement();
  336.             }
  337.  
  338.             // Superscript / subscript
  339.             if ($pFont->getSuperScript(|| $pFont->getSubScript()) {
  340.                 $objWriter->startElement('vertAlign');
  341.                 if ($pFont->getSuperScript()) {
  342.                     $objWriter->writeAttribute('val''superscript');
  343.                 else if ($pFont->getSubScript()) {
  344.                     $objWriter->writeAttribute('val''subscript');
  345.                 }
  346.                 $objWriter->endElement();
  347.             }
  348.  
  349.             // Underline
  350.             $objWriter->startElement('u');
  351.             $objWriter->writeAttribute('val'$pFont->getUnderline());
  352.             $objWriter->endElement();
  353.  
  354.             // Strikethrough
  355.             if ($pFont->getStrikethrough()) {
  356.                 $objWriter->startElement('strike');
  357.                 $objWriter->writeAttribute('val''true');
  358.                 $objWriter->endElement();
  359.             }
  360.  
  361.             // Foreground color
  362.             $objWriter->startElement('color');
  363.             $objWriter->writeAttribute('rgb'$pFont->getColor()->getARGB());
  364.             $objWriter->endElement();
  365.  
  366.         $objWriter->endElement();
  367.     }
  368.  
  369.     /**
  370.      * Write Border
  371.      *
  372.      * @param     PHPExcel_Shared_XMLWriter            $objWriter         XML Writer
  373.      * @param     PHPExcel_Style_Borders                $pBorders        Borders style
  374.      * @throws     Exception
  375.      */
  376.     private function _writeBorder(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Style_Borders $pBorders null)
  377.     {
  378.         // Write border
  379.         $objWriter->startElement('border');
  380.             // Diagonal?
  381.             switch ($pBorders->getDiagonalDirection()) {
  382.                 case PHPExcel_Style_Borders::DIAGONAL_UP:
  383.                     $objWriter->writeAttribute('diagonalUp',     'true');
  384.                     $objWriter->writeAttribute('diagonalDown',     'false');
  385.                     break;
  386.                 case PHPExcel_Style_Borders::DIAGONAL_DOWN:
  387.                     $objWriter->writeAttribute('diagonalUp',     'false');
  388.                     $objWriter->writeAttribute('diagonalDown',     'true');
  389.                     break;
  390.             }
  391.  
  392.             // Outline?
  393.             $objWriter->writeAttribute('outline'($pBorders->getOutline('true' 'false'));
  394.  
  395.             // BorderPr
  396.             $this->_writeBorderPr($objWriter'left',             $pBorders->getLeft());
  397.             $this->_writeBorderPr($objWriter'right',             $pBorders->getRight());
  398.             $this->_writeBorderPr($objWriter'top',             $pBorders->getTop());
  399.             $this->_writeBorderPr($objWriter'bottom',         $pBorders->getBottom());
  400.             $this->_writeBorderPr($objWriter'diagonal',         $pBorders->getDiagonal());
  401.             $this->_writeBorderPr($objWriter'vertical',         $pBorders->getVertical());
  402.             $this->_writeBorderPr($objWriter'horizontal',     $pBorders->getHorizontal());
  403.         $objWriter->endElement();
  404.     }
  405.  
  406.     /**
  407.      * Write Cell Style Xf
  408.      *
  409.      * @param     PHPExcel_Shared_XMLWriter            $objWriter         XML Writer
  410.      * @param     PHPExcel_Style                        $pStyle            Style
  411.      * @throws     Exception
  412.      */
  413.     private function _writeCellStyleXf(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Style $pStyle null)
  414.     {
  415.         // xf
  416.         $objWriter->startElement('xf');
  417.             $objWriter->writeAttribute('xfId'0);
  418.             $objWriter->writeAttribute('fontId',             (int)$this->getParentWriter()->getFontHashTable()->getIndexForHashCode($pStyle->getFont()->getHashCode()));
  419.             
  420.             if ($pStyle->getNumberFormat()->getBuiltInFormatCode(=== false{
  421.                 $objWriter->writeAttribute('numFmtId',             (int)($this->getParentWriter()->getNumFmtHashTable()->getIndexForHashCode($pStyle->getNumberFormat()->getHashCode()) 164)   );
  422.             else {
  423.                 $objWriter->writeAttribute('numFmtId',             (int)$pStyle->getNumberFormat()->getBuiltInFormatCode());
  424.             }
  425.             
  426.             $objWriter->writeAttribute('fillId',             (int)$this->getParentWriter()->getFillHashTable()->getIndexForHashCode($pStyle->getFill()->getHashCode()));
  427.             $objWriter->writeAttribute('borderId',             (int)$this->getParentWriter()->getBordersHashTable()->getIndexForHashCode($pStyle->getBorders()->getHashCode()));
  428.  
  429.             // Apply styles?
  430.             $objWriter->writeAttribute('applyFont',         (PHPExcel_Style::getDefaultStyle()->getFont()->getHashCode(!= $pStyle->getFont()->getHashCode()) '1' '0');
  431.             $objWriter->writeAttribute('applyNumberFormat'(PHPExcel_Style::getDefaultStyle()->getNumberFormat()->getHashCode(!= $pStyle->getNumberFormat()->getHashCode()) '1' '0');
  432.             $objWriter->writeAttribute('applyFill',         (PHPExcel_Style::getDefaultStyle()->getFill()->getHashCode(!= $pStyle->getFill()->getHashCode()) '1' '0');
  433.             $objWriter->writeAttribute('applyBorder',         (PHPExcel_Style::getDefaultStyle()->getBorders()->getHashCode(!= $pStyle->getBorders()->getHashCode()) '1' '0');
  434.             $objWriter->writeAttribute('applyAlignment',    (PHPExcel_Style::getDefaultStyle()->getAlignment()->getHashCode(!= $pStyle->getAlignment()->getHashCode()) '1' '0');
  435.             if ($pStyle->getProtection()->getLocked(!= PHPExcel_Style_Protection::PROTECTION_INHERIT || $pStyle->getProtection()->getHidden(!= PHPExcel_Style_Protection::PROTECTION_INHERIT{
  436.                 $objWriter->writeAttribute('applyProtection''true');
  437.             }
  438.  
  439.             // alignment
  440.             $objWriter->startElement('alignment');
  441.                 $objWriter->writeAttribute('horizontal',     $pStyle->getAlignment()->getHorizontal());
  442.                 $objWriter->writeAttribute('vertical',         $pStyle->getAlignment()->getVertical());
  443.  
  444.                 $textRotation 0;
  445.                 if ($pStyle->getAlignment()->getTextRotation(>= 0{
  446.                     $textRotation $pStyle->getAlignment()->getTextRotation();
  447.                 else if ($pStyle->getAlignment()->getTextRotation(0{
  448.                     $textRotation 90 $pStyle->getAlignment()->getTextRotation();
  449.                 }
  450.  
  451.                 $objWriter->writeAttribute('textRotation',     $textRotation);
  452.                 $objWriter->writeAttribute('wrapText',         ($pStyle->getAlignment()->getWrapText('true' 'false'));
  453.                 $objWriter->writeAttribute('shrinkToFit',     ($pStyle->getAlignment()->getShrinkToFit('true' 'false'));
  454.  
  455.                 if ($pStyle->getAlignment()->getIndent(0{
  456.                     $objWriter->writeAttribute('indent',     $pStyle->getAlignment()->getIndent());
  457.                 }
  458.             $objWriter->endElement();
  459.  
  460.             // protection
  461.             if ($pStyle->getProtection()->getLocked(!= PHPExcel_Style_Protection::PROTECTION_INHERIT || $pStyle->getProtection()->getHidden(!= PHPExcel_Style_Protection::PROTECTION_INHERIT{
  462.                 $objWriter->startElement('protection');
  463.                     if ($pStyle->getProtection()->getLocked(!= PHPExcel_Style_Protection::PROTECTION_INHERIT{
  464.                         $objWriter->writeAttribute('locked',         ($pStyle->getProtection()->getLocked(== PHPExcel_Style_Protection::PROTECTION_PROTECTED 'true' 'false'));
  465.                     }
  466.                     if ($pStyle->getProtection()->getHidden(!= PHPExcel_Style_Protection::PROTECTION_INHERIT{
  467.                         $objWriter->writeAttribute('hidden',         ($pStyle->getProtection()->getHidden(== PHPExcel_Style_Protection::PROTECTION_PROTECTED 'true' 'false'));
  468.                     }
  469.                 $objWriter->endElement();
  470.             }
  471.  
  472.         $objWriter->endElement();
  473.     }
  474.  
  475.     /**
  476.      * Write Cell Style Dxf
  477.      *
  478.      * @param     PHPExcel_Shared_XMLWriter         $objWriter         XML Writer
  479.      * @param     PHPExcel_Style                    $pStyle            Style
  480.      * @throws     Exception
  481.      */
  482.     private function _writeCellStyleDxf(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Style $pStyle null)
  483.     {
  484.         // dxf
  485.         $objWriter->startElement('dxf');
  486.  
  487.             // font
  488.             $this->_writeFont($objWriter$pStyle->getFont());
  489.  
  490.             // numFmt
  491.             $this->_writeNumFmt($objWriter$pStyle->getNumberFormat());
  492.  
  493.             // fill
  494.             $this->_writeFill($objWriter$pStyle->getFill());
  495.  
  496.             // alignment
  497.             $objWriter->startElement('alignment');
  498.                 $objWriter->writeAttribute('horizontal',     $pStyle->getAlignment()->getHorizontal());
  499.                 $objWriter->writeAttribute('vertical',         $pStyle->getAlignment()->getVertical());
  500.  
  501.                 $textRotation 0;
  502.                 if ($pStyle->getAlignment()->getTextRotation(>= 0{
  503.                     $textRotation $pStyle->getAlignment()->getTextRotation();
  504.                 else if ($pStyle->getAlignment()->getTextRotation(0{
  505.                     $textRotation 90 $pStyle->getAlignment()->getTextRotation();
  506.                 }
  507.  
  508.                 $objWriter->writeAttribute('textRotation',     $textRotation);
  509.             $objWriter->endElement();
  510.  
  511.             // border
  512.             $this->_writeBorder($objWriter$pStyle->getBorders());
  513.  
  514.             // protection
  515.             if ($pStyle->getProtection()->getLocked(!= PHPExcel_Style_Protection::PROTECTION_INHERIT || $pStyle->getProtection()->getHidden(!= PHPExcel_Style_Protection::PROTECTION_INHERIT{
  516.                 $objWriter->startElement('protection');
  517.                     if ($pStyle->getProtection()->getLocked(!= PHPExcel_Style_Protection::PROTECTION_INHERIT{
  518.                         $objWriter->writeAttribute('locked',         ($pStyle->getProtection()->getLocked(== PHPExcel_Style_Protection::PROTECTION_PROTECTED 'true' 'false'));
  519.                     }
  520.                     if ($pStyle->getProtection()->getHidden(!= PHPExcel_Style_Protection::PROTECTION_INHERIT{
  521.                         $objWriter->writeAttribute('hidden',         ($pStyle->getProtection()->getHidden(== PHPExcel_Style_Protection::PROTECTION_PROTECTED 'true' 'false'));
  522.                     }
  523.                 $objWriter->endElement();
  524.             }
  525.  
  526.         $objWriter->endElement();
  527.     }
  528.  
  529.     /**
  530.      * Write BorderPr
  531.      *
  532.      * @param     PHPExcel_Shared_XMLWriter        $objWriter         XML Writer
  533.      * @param     string                            $pName            Element name
  534.      * @param     PHPExcel_Style_Border            $pBorder        Border style
  535.      * @throws     Exception
  536.      */
  537.     private function _writeBorderPr(PHPExcel_Shared_XMLWriter $objWriter null$pName 'left'PHPExcel_Style_Border $pBorder null)
  538.     {
  539.         // Write BorderPr
  540.         if ($pBorder->getBorderStyle(!= PHPExcel_Style_Border::BORDER_NONE{
  541.             $objWriter->startElement($pName);
  542.             $objWriter->writeAttribute('style',     $pBorder->getBorderStyle());
  543.  
  544.                 // color
  545.                 $objWriter->startElement('color');
  546.                 $objWriter->writeAttribute('rgb',     $pBorder->getColor()->getARGB());
  547.                 $objWriter->endElement();
  548.  
  549.             $objWriter->endElement();
  550.         }
  551.     }
  552.  
  553.     /**
  554.      * Write NumberFormat
  555.      *
  556.      * @param     PHPExcel_Shared_XMLWriter            $objWriter         XML Writer
  557.      * @param     PHPExcel_Style_NumberFormat            $pNumberFormat    Number Format
  558.      * @param     int                                    $pId            Number Format identifier
  559.      * @throws     Exception
  560.      */
  561.     private function _writeNumFmt(PHPExcel_Shared_XMLWriter $objWriter nullPHPExcel_Style_NumberFormat $pNumberFormat null$pId 0)
  562.     {
  563.         // Translate formatcode
  564.         $formatCode $pNumberFormat->getFormatCode();
  565.  
  566.         // numFmt
  567.         $objWriter->startElement('numFmt');
  568.             $objWriter->writeAttribute('numFmtId',         ($pId 164));
  569.             $objWriter->writeAttribute('formatCode',     $formatCode);
  570.         $objWriter->endElement();
  571.     }
  572.  
  573.     /**
  574.      * Get an array of all styles
  575.      *
  576.      * @param     PHPExcel                $pPHPExcel 
  577.      * @return     PHPExcel_Style[]        All styles in PHPExcel
  578.      * @throws     Exception
  579.      */
  580.     public function allStyles(PHPExcel $pPHPExcel null)
  581.     {
  582.         // Get an array of all styles
  583.         $aStyles        array();
  584.  
  585.         $sheetCount $pPHPExcel->getSheetCount();
  586.         for ($i 0$i $sheetCount++$i{
  587.             foreach ($pPHPExcel->getSheet($i)->getStyles(as $style{
  588.                 $aStyles[$style;
  589.             }
  590.         }
  591.  
  592.         return $aStyles;
  593.     }
  594.  
  595.     /**
  596.      * Get an array of all conditional styles
  597.      *
  598.      * @param     PHPExcel                $pPHPExcel 
  599.      * @return     PHPExcel_Style[]        All styles in PHPExcel
  600.      * @throws     Exception
  601.      */
  602.     public function allConditionalStyles(PHPExcel $pPHPExcel null)
  603.     {
  604.         // Get an array of all styles
  605.         $aStyles        array();
  606.  
  607.         $sheetCount $pPHPExcel->getSheetCount();
  608.         for ($i 0$i $sheetCount++$i{
  609.             foreach ($pPHPExcel->getSheet($i)->getStyles(as $style{
  610.                 if (count($style->getConditionalStyles()) 0{
  611.                     foreach ($style->getConditionalStyles(as $conditional{
  612.                         $aStyles[$conditional;
  613.                     }
  614.                 }
  615.             }
  616.         }
  617.  
  618.         return $aStyles;
  619.     }
  620.  
  621.     /**
  622.      * Get an array of all fills
  623.      *
  624.      * @param     PHPExcel                        $pPHPExcel 
  625.      * @return     PHPExcel_Style_Fill[]        All fills in PHPExcel
  626.      * @throws     Exception
  627.      */
  628.     public function allFills(PHPExcel $pPHPExcel null)
  629.     {
  630.         // Get an array of unique fills
  631.         $aFills     array();
  632.         $aStyles     $this->allStyles($pPHPExcel);
  633.  
  634.         foreach ($aStyles as $style{
  635.             if (!array_key_exists($style->getFill()->getHashCode()$aFills)) {
  636.                 $aFills$style->getFill()->getHashCode($style->getFill();
  637.             }
  638.         }
  639.  
  640.         return $aFills;
  641.     }
  642.  
  643.     /**
  644.      * Get an array of all fonts
  645.      *
  646.      * @param     PHPExcel                        $pPHPExcel 
  647.      * @return     PHPExcel_Style_Font[]        All fonts in PHPExcel
  648.      * @throws     Exception
  649.      */
  650.     public function allFonts(PHPExcel $pPHPExcel null)
  651.     {
  652.         // Get an array of unique fonts
  653.         $aFonts     array();
  654.         $aStyles     $this->allStyles($pPHPExcel);
  655.  
  656.         foreach ($aStyles as $style{
  657.             if (!array_key_exists($style->getFont()->getHashCode()$aFonts)) {
  658.                 $aFonts$style->getFont()->getHashCode($style->getFont();
  659.             }
  660.         }
  661.  
  662.         return $aFonts;
  663.     }
  664.  
  665.     /**
  666.      * Get an array of all borders
  667.      *
  668.      * @param     PHPExcel                        $pPHPExcel 
  669.      * @return     PHPExcel_Style_Borders[]        All borders in PHPExcel
  670.      * @throws     Exception
  671.      */
  672.     public function allBorders(PHPExcel $pPHPExcel null)
  673.     {
  674.         // Get an array of unique borders
  675.         $aBorders     array();
  676.         $aStyles     $this->allStyles($pPHPExcel);
  677.  
  678.         foreach ($aStyles as $style{
  679.             if (!array_key_exists($style->getBorders()->getHashCode()$aBorders)) {
  680.                 $aBorders$style->getBorders()->getHashCode($style->getBorders();
  681.             }
  682.         }
  683.  
  684.         return $aBorders;
  685.     }
  686.  
  687.     /**
  688.      * Get an array of all number formats
  689.      *
  690.      * @param     PHPExcel                                $pPHPExcel 
  691.      * @return     PHPExcel_Style_NumberFormat[]        All number formats in PHPExcel
  692.      * @throws     Exception
  693.      */
  694.     public function allNumberFormats(PHPExcel $pPHPExcel null)
  695.     {
  696.         // Get an array of unique number formats
  697.         $aNumFmts     array();
  698.         $aStyles     $this->allStyles($pPHPExcel);
  699.  
  700.         foreach ($aStyles as $style{
  701.             if ($style->getNumberFormat()->getBuiltInFormatCode(=== false && !array_key_exists($style->getNumberFormat()->getHashCode()$aNumFmts)) {
  702.                 $aNumFmts$style->getNumberFormat()->getHashCode($style->getNumberFormat();
  703.             }
  704.         }
  705.  
  706.         return $aNumFmts;
  707.     }
  708. }

Documentation generated on Wed, 22 Apr 2009 09:02:28 +0200 by phpDocumentor 1.4.1