Source for file Style.php
Documentation is available at Style.php 
 * Copyright (c) 2006 - 2011 PHPExcel  
 * This library is free software; you can redistribute it and/or  
 * modify it under the terms of the GNU Lesser General Public  
 * License as published by the Free Software Foundation; either  
 * version 2.1 of the License, or (at your option) any later version.  
 * This library is distributed in the hope that it will be useful,  
 * but WITHOUT ANY WARRANTY; without even the implied warranty of  
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  
 * Lesser General Public License for more details.  
 * You should have received a copy of the GNU Lesser General Public  
 * License along with this library; if not, write to the Free Software  
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA  
 * @package    PHPExcel_Writer_Excel2007  
 * @copyright  Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)  
 * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL  
 * @version    1.7.6, 2011-02-27  
 * PHPExcel_Writer_Excel2007_Style  
 * @package    PHPExcel_Writer_Excel2007  
 * @copyright  Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)  
     * Write styles to XML format  
     * @param     PHPExcel    $pPHPExcel   
     * @return     string         XML Output  
    public function writeStyles(PHPExcel $pPHPExcel =  null)  
        $objWriter->startDocument('1.0','UTF-8','yes');  
        $objWriter->startElement('styleSheet');  
        $objWriter->writeAttribute('xml:space', 'preserve');  
        $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main');  
            $objWriter->startElement('numFmts');  
            $objWriter->writeAttribute('count', $this->getParentWriter()->getNumFmtHashTable()->count());  
                for ($i =  0; $i <  $this->getParentWriter()->getNumFmtHashTable()->count(); ++ $i) {  
                    $this->_writeNumFmt($objWriter, $this->getParentWriter()->getNumFmtHashTable()->getByIndex($i), $i);  
            $objWriter->endElement();  
            $objWriter->startElement('fonts');  
            $objWriter->writeAttribute('count', $this->getParentWriter()->getFontHashTable()->count());  
                for ($i =  0; $i <  $this->getParentWriter()->getFontHashTable()->count(); ++ $i) {  
                    $this->_writeFont($objWriter, $this->getParentWriter()->getFontHashTable()->getByIndex($i));  
            $objWriter->endElement();  
            $objWriter->startElement('fills');  
            $objWriter->writeAttribute('count', $this->getParentWriter()->getFillHashTable()->count());  
                for ($i =  0; $i <  $this->getParentWriter()->getFillHashTable()->count(); ++ $i) {  
                    $this->_writeFill($objWriter, $this->getParentWriter()->getFillHashTable()->getByIndex($i));  
            $objWriter->endElement();  
            $objWriter->startElement('borders');  
            $objWriter->writeAttribute('count', $this->getParentWriter()->getBordersHashTable()->count());  
                for ($i =  0; $i <  $this->getParentWriter()->getBordersHashTable()->count(); ++ $i) {  
                    $this->_writeBorder($objWriter, $this->getParentWriter()->getBordersHashTable()->getByIndex($i));  
            $objWriter->endElement();  
            $objWriter->startElement('cellStyleXfs');  
            $objWriter->writeAttribute('count', 1);  
                $objWriter->startElement('xf');  
                    $objWriter->writeAttribute('numFmtId',     0);  
                    $objWriter->writeAttribute('fontId',     0);  
                    $objWriter->writeAttribute('fillId',     0);  
                    $objWriter->writeAttribute('borderId',    0);  
                $objWriter->endElement();  
            $objWriter->endElement();  
            $objWriter->startElement('cellXfs');  
            $objWriter->writeAttribute('count', count($pPHPExcel->getCellXfCollection()));  
                foreach ($pPHPExcel->getCellXfCollection() as $cellXf) {  
                    $this->_writeCellStyleXf($objWriter, $cellXf, $pPHPExcel);  
            $objWriter->endElement();  
            $objWriter->startElement('cellStyles');  
            $objWriter->writeAttribute('count', 1);  
                $objWriter->startElement('cellStyle');  
                    $objWriter->writeAttribute('name',         'Normal');  
                    $objWriter->writeAttribute('xfId',         0);  
                    $objWriter->writeAttribute('builtinId',    0);  
                $objWriter->endElement();  
            $objWriter->endElement();  
            $objWriter->startElement('dxfs');  
            $objWriter->writeAttribute('count', $this->getParentWriter()->getStylesConditionalHashTable()->count());  
                for ($i =  0; $i <  $this->getParentWriter()->getStylesConditionalHashTable()->count(); ++ $i) {  
                    $this->_writeCellStyleDxf($objWriter, $this->getParentWriter()->getStylesConditionalHashTable()->getByIndex($i)->getStyle());  
            $objWriter->endElement();  
            $objWriter->startElement('tableStyles');  
            $objWriter->writeAttribute('defaultTableStyle', 'TableStyleMedium9');  
            $objWriter->writeAttribute('defaultPivotStyle', 'PivotTableStyle1');  
            $objWriter->endElement();  
        $objWriter->endElement();  
        return $objWriter->getData();  
     * @param     PHPExcel_Shared_XMLWriter     $objWriter         XML Writer  
     * @param     PHPExcel_Style_Fill            $pFill            Fill style  
    private function _writeFill(PHPExcel_Shared_XMLWriter $objWriter =  null, PHPExcel_Style_Fill $pFill =  null)  
        // Check if this is a pattern type or gradient type  
            $this->_writeGradientFill($objWriter, $pFill);  
            $this->_writePatternFill($objWriter, $pFill);  
     * @param     PHPExcel_Shared_XMLWriter     $objWriter         XML Writer  
     * @param     PHPExcel_Style_Fill            $pFill            Fill style  
    private function _writeGradientFill(PHPExcel_Shared_XMLWriter $objWriter =  null, PHPExcel_Style_Fill $pFill =  null)  
        $objWriter->startElement('fill');  
            $objWriter->startElement('gradientFill');  
                $objWriter->writeAttribute('type',         $pFill->getFillType());  
                $objWriter->writeAttribute('degree',     $pFill->getRotation());  
                $objWriter->startElement('stop');  
                $objWriter->writeAttribute('position', '0');  
                    $objWriter->startElement('color');  
                    $objWriter->writeAttribute('rgb', $pFill->getStartColor()->getARGB());  
                    $objWriter->endElement();  
                $objWriter->endElement();  
                $objWriter->startElement('stop');  
                $objWriter->writeAttribute('position', '1');  
                    $objWriter->startElement('color');  
                    $objWriter->writeAttribute('rgb', $pFill->getEndColor()->getARGB());  
                    $objWriter->endElement();  
                $objWriter->endElement();  
            $objWriter->endElement();  
        $objWriter->endElement();  
     * @param     PHPExcel_Shared_XMLWriter            $objWriter         XML Writer  
     * @param     PHPExcel_Style_Fill                    $pFill            Fill style  
    private function _writePatternFill(PHPExcel_Shared_XMLWriter $objWriter =  null, PHPExcel_Style_Fill $pFill =  null)  
        $objWriter->startElement('fill');  
            $objWriter->startElement('patternFill');  
                $objWriter->writeAttribute('patternType', $pFill->getFillType());  
                $objWriter->startElement('fgColor');  
                $objWriter->writeAttribute('rgb', $pFill->getStartColor()->getARGB());  
                $objWriter->endElement();  
                $objWriter->startElement('bgColor');  
                $objWriter->writeAttribute('rgb', $pFill->getEndColor()->getARGB());  
                $objWriter->endElement();  
            $objWriter->endElement();  
        $objWriter->endElement();  
     * @param     PHPExcel_Shared_XMLWriter        $objWriter         XML Writer  
     * @param     PHPExcel_Style_Font                $pFont            Font style  
    private function _writeFont(PHPExcel_Shared_XMLWriter $objWriter =  null, PHPExcel_Style_Font $pFont =  null)  
        $objWriter->startElement('font');  
            $objWriter->startElement('name');  
            $objWriter->writeAttribute('val', $pFont->getName());  
            $objWriter->endElement();  
            $objWriter->startElement('sz');  
            $objWriter->writeAttribute('val', $pFont->getSize());  
            $objWriter->endElement();  
            // Bold. We explicitly write this element also when false (like MS Office Excel 2007 does  
            // for conditional formatting). Otherwise it will apparently not be picked up in conditional  
            // formatting style dialog  
            $objWriter->startElement('b');  
            $objWriter->writeAttribute('val', $pFont->getBold() ?  '1' :  '0');  
            $objWriter->endElement();  
            $objWriter->startElement('i');  
            $objWriter->writeAttribute('val', $pFont->getItalic() ?  '1' :  '0');  
            $objWriter->endElement();  
            // Superscript / subscript  
            if ($pFont->getSuperScript() ||  $pFont->getSubScript()) {  
                $objWriter->startElement('vertAlign');  
                if ($pFont->getSuperScript()) {  
                    $objWriter->writeAttribute('val', 'superscript');  
                } else if ($pFont->getSubScript()) {  
                    $objWriter->writeAttribute('val', 'subscript');  
                $objWriter->endElement();  
            $objWriter->startElement('u');  
            $objWriter->writeAttribute('val', $pFont->getUnderline());  
            $objWriter->endElement();  
            $objWriter->startElement('strike');  
            $objWriter->writeAttribute('val', $pFont->getStrikethrough() ?  '1' :  '0');  
            $objWriter->endElement();  
            $objWriter->startElement('color');  
            $objWriter->writeAttribute('rgb', $pFont->getColor()->getARGB());  
            $objWriter->endElement();  
        $objWriter->endElement();  
     * @param     PHPExcel_Shared_XMLWriter            $objWriter         XML Writer  
     * @param     PHPExcel_Style_Borders                $pBorders        Borders style  
    private function _writeBorder(PHPExcel_Shared_XMLWriter $objWriter =  null, PHPExcel_Style_Borders $pBorders =  null)  
        $objWriter->startElement('border');  
            switch ($pBorders->getDiagonalDirection()) {  
                    $objWriter->writeAttribute('diagonalUp',     'true');  
                    $objWriter->writeAttribute('diagonalDown',     'false');  
                    $objWriter->writeAttribute('diagonalUp',     'false');  
                    $objWriter->writeAttribute('diagonalDown',     'true');  
                    $objWriter->writeAttribute('diagonalUp',     'true');  
                    $objWriter->writeAttribute('diagonalDown',     'true');  
            $this->_writeBorderPr($objWriter, 'left',             $pBorders->getLeft());  
            $this->_writeBorderPr($objWriter, 'right',             $pBorders->getRight());  
            $this->_writeBorderPr($objWriter, 'top',             $pBorders->getTop());  
            $this->_writeBorderPr($objWriter, 'bottom',         $pBorders->getBottom());  
            $this->_writeBorderPr($objWriter, 'diagonal',         $pBorders->getDiagonal());  
        $objWriter->endElement();  
     * @param     PHPExcel_Shared_XMLWriter            $objWriter         XML Writer  
     * @param     PHPExcel_Style                        $pStyle            Style  
     * @param     PHPExcel                            $pPHPExcel        Workbook  
    private function _writeCellStyleXf(PHPExcel_Shared_XMLWriter $objWriter =  null, PHPExcel_Style $pStyle =  null, PHPExcel $pPHPExcel =  null)  
        $objWriter->startElement('xf');  
            $objWriter->writeAttribute('xfId', 0);  
            $objWriter->writeAttribute('fontId',             (int) $this->getParentWriter()->getFontHashTable()->getIndexForHashCode($pStyle->getFont()->getHashCode()));  
            if ($pStyle->getNumberFormat()->getBuiltInFormatCode() ===  false) {  
                $objWriter->writeAttribute('numFmtId',             (int) ($this->getParentWriter()->getNumFmtHashTable()->getIndexForHashCode($pStyle->getNumberFormat()->getHashCode()) +  164)   );  
                $objWriter->writeAttribute('numFmtId',             (int) $pStyle->getNumberFormat()->getBuiltInFormatCode());  
            $objWriter->writeAttribute('fillId',             (int) $this->getParentWriter()->getFillHashTable()->getIndexForHashCode($pStyle->getFill()->getHashCode()));  
            $objWriter->writeAttribute('borderId',             (int) $this->getParentWriter()->getBordersHashTable()->getIndexForHashCode($pStyle->getBorders()->getHashCode()));  
            $objWriter->writeAttribute('applyFont',         ($pPHPExcel->getDefaultStyle()->getFont()->getHashCode() !=  $pStyle->getFont()->getHashCode()) ?  '1' :  '0');  
            $objWriter->writeAttribute('applyNumberFormat', ($pPHPExcel->getDefaultStyle()->getNumberFormat()->getHashCode() !=  $pStyle->getNumberFormat()->getHashCode()) ?  '1' :  '0');  
            $objWriter->writeAttribute('applyFill',         ($pPHPExcel->getDefaultStyle()->getFill()->getHashCode() !=  $pStyle->getFill()->getHashCode()) ?  '1' :  '0');  
            $objWriter->writeAttribute('applyBorder',         ($pPHPExcel->getDefaultStyle()->getBorders()->getHashCode() !=  $pStyle->getBorders()->getHashCode()) ?  '1' :  '0');  
            $objWriter->writeAttribute('applyAlignment',    ($pPHPExcel->getDefaultStyle()->getAlignment()->getHashCode() !=  $pStyle->getAlignment()->getHashCode()) ?  '1' :  '0');  
                $objWriter->writeAttribute('applyProtection', 'true');  
            $objWriter->startElement('alignment');  
                $objWriter->writeAttribute('horizontal',     $pStyle->getAlignment()->getHorizontal());  
                $objWriter->writeAttribute('vertical',         $pStyle->getAlignment()->getVertical());  
                if ($pStyle->getAlignment()->getTextRotation() >=  0) {  
                    $textRotation =  $pStyle->getAlignment()->getTextRotation();  
                } else if ($pStyle->getAlignment()->getTextRotation() <  0) {  
                    $textRotation =  90 -  $pStyle->getAlignment()->getTextRotation();  
                $objWriter->writeAttribute('textRotation',     $textRotation);  
                $objWriter->writeAttribute('wrapText',         ($pStyle->getAlignment()->getWrapText() ?  'true' :  'false'));  
                $objWriter->writeAttribute('shrinkToFit',     ($pStyle->getAlignment()->getShrinkToFit() ?  'true' :  'false'));  
                if ($pStyle->getAlignment()->getIndent() >  0) {  
                    $objWriter->writeAttribute('indent',     $pStyle->getAlignment()->getIndent());  
            $objWriter->endElement();  
                $objWriter->startElement('protection');  
                        $objWriter->writeAttribute('locked',         ($pStyle->getProtection()->getLocked() ==  PHPExcel_Style_Protection::PROTECTION_PROTECTED ?  'true' :  'false'));  
                        $objWriter->writeAttribute('hidden',         ($pStyle->getProtection()->getHidden() ==  PHPExcel_Style_Protection::PROTECTION_PROTECTED ?  'true' :  'false'));  
                $objWriter->endElement();  
        $objWriter->endElement();  
     * @param     PHPExcel_Shared_XMLWriter         $objWriter         XML Writer  
     * @param     PHPExcel_Style                    $pStyle            Style  
    private function _writeCellStyleDxf(PHPExcel_Shared_XMLWriter $objWriter =  null, PHPExcel_Style $pStyle =  null)  
        $objWriter->startElement('dxf');  
            $this->_writeFont($objWriter, $pStyle->getFont());  
            $this->_writeNumFmt($objWriter, $pStyle->getNumberFormat());  
            $this->_writeFill($objWriter, $pStyle->getFill());  
            $objWriter->startElement('alignment');  
                $objWriter->writeAttribute('horizontal',     $pStyle->getAlignment()->getHorizontal());  
                $objWriter->writeAttribute('vertical',         $pStyle->getAlignment()->getVertical());  
                if ($pStyle->getAlignment()->getTextRotation() >=  0) {  
                    $textRotation =  $pStyle->getAlignment()->getTextRotation();  
                } else if ($pStyle->getAlignment()->getTextRotation() <  0) {  
                    $textRotation =  90 -  $pStyle->getAlignment()->getTextRotation();  
                $objWriter->writeAttribute('textRotation',     $textRotation);  
            $objWriter->endElement();  
            $this->_writeBorder($objWriter, $pStyle->getBorders());  
                $objWriter->startElement('protection');  
                        $objWriter->writeAttribute('locked',         ($pStyle->getProtection()->getLocked() ==  PHPExcel_Style_Protection::PROTECTION_PROTECTED ?  'true' :  'false'));  
                        $objWriter->writeAttribute('hidden',         ($pStyle->getProtection()->getHidden() ==  PHPExcel_Style_Protection::PROTECTION_PROTECTED ?  'true' :  'false'));  
                $objWriter->endElement();  
        $objWriter->endElement();  
     * @param     PHPExcel_Shared_XMLWriter        $objWriter         XML Writer  
     * @param     string                            $pName            Element name  
     * @param     PHPExcel_Style_Border            $pBorder        Border style  
    private function _writeBorderPr(PHPExcel_Shared_XMLWriter $objWriter =  null, $pName =  'left', PHPExcel_Style_Border $pBorder =  null)  
            $objWriter->startElement($pName);  
            $objWriter->writeAttribute('style',     $pBorder->getBorderStyle());  
                $objWriter->startElement('color');  
                $objWriter->writeAttribute('rgb',     $pBorder->getColor()->getARGB());  
                $objWriter->endElement();  
            $objWriter->endElement();  
     * @param     PHPExcel_Shared_XMLWriter            $objWriter         XML Writer  
     * @param     PHPExcel_Style_NumberFormat            $pNumberFormat    Number Format  
     * @param     int                                    $pId            Number Format identifier  
    private function _writeNumFmt(PHPExcel_Shared_XMLWriter $objWriter =  null, PHPExcel_Style_NumberFormat $pNumberFormat =  null, $pId =  0)  
        $formatCode =  $pNumberFormat->getFormatCode();  
        $objWriter->startElement('numFmt');  
            $objWriter->writeAttribute('numFmtId',         ($pId +  164));  
            $objWriter->writeAttribute('formatCode',     $formatCode);  
        $objWriter->endElement();  
     * Get an array of all styles  
     * @param     PHPExcel                $pPHPExcel   
     * @return     PHPExcel_Style[]        All styles in PHPExcel  
    public function allStyles(PHPExcel $pPHPExcel =  null)  
        $aStyles =  $pPHPExcel->getCellXfCollection();  
     * Get an array of all conditional styles  
     * @param     PHPExcel                            $pPHPExcel   
     * @return     PHPExcel_Style_Conditional[]        All conditional styles in PHPExcel  
        // Get an array of all styles  
        $sheetCount =  $pPHPExcel->getSheetCount();  
        for ($i =  0; $i <  $sheetCount; ++ $i) {  
            foreach ($pPHPExcel->getSheet($i)->getConditionalStylesCollection() as $conditionalStyles) {  
                foreach ($conditionalStyles as $conditionalStyle) {  
                    $aStyles[] =  $conditionalStyle;  
     * Get an array of all fills  
     * @param     PHPExcel                        $pPHPExcel   
     * @return     PHPExcel_Style_Fill[]        All fills in PHPExcel  
    public function allFills(PHPExcel $pPHPExcel =  null)  
        // Get an array of unique fills  
        // Two first fills are predefined  
        foreach ($aStyles as $style) {  
                $aFills[ $style->getFill()->getHashCode() ] =  $style->getFill();  
     * Get an array of all fonts  
     * @param     PHPExcel                        $pPHPExcel   
     * @return     PHPExcel_Style_Font[]        All fonts in PHPExcel  
    public function allFonts(PHPExcel $pPHPExcel =  null)  
        // Get an array of unique fonts  
        foreach ($aStyles as $style) {  
                $aFonts[ $style->getFont()->getHashCode() ] =  $style->getFont();  
     * Get an array of all borders  
     * @param     PHPExcel                        $pPHPExcel   
     * @return     PHPExcel_Style_Borders[]        All borders in PHPExcel  
    public function allBorders(PHPExcel $pPHPExcel =  null)  
        // Get an array of unique borders  
        foreach ($aStyles as $style) {  
                $aBorders[ $style->getBorders()->getHashCode() ] =  $style->getBorders();  
     * Get an array of all number formats  
     * @param     PHPExcel                                $pPHPExcel   
     * @return     PHPExcel_Style_NumberFormat[]        All number formats in PHPExcel  
        // Get an array of unique number formats  
        foreach ($aStyles as $style) {  
            if ($style->getNumberFormat()->getBuiltInFormatCode() ===  false &&  !array_key_exists($style->getNumberFormat()->getHashCode(), $aNumFmts)) {  
                $aNumFmts[ $style->getNumberFormat()->getHashCode() ] =  $style->getNumberFormat();  
 
 
        
       |