| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704 | <?php/** * PHPExcel * * Copyright (c) 2006 - 2014 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 * * @category   PHPExcel * @package    PHPExcel_Writer_Excel2007 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt	LGPL * @version    1.8.0, 2014-03-02 *//** * PHPExcel_Writer_Excel2007_Style * * @category   PHPExcel * @package    PHPExcel_Writer_Excel2007 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) */class PHPExcel_Writer_Excel2007_Style extends PHPExcel_Writer_Excel2007_WriterPart{	/**	 * Write styles to XML format	 *	 * @param 	PHPExcel	$pPHPExcel	 * @return 	string 		XML Output	 * @throws 	PHPExcel_Writer_Exception	 */	public function writeStyles(PHPExcel $pPHPExcel = null)	{		// Create XML writer		$objWriter = null;		if ($this->getParentWriter()->getUseDiskCaching()) {			$objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());		} else {			$objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);		}		// XML header		$objWriter->startDocument('1.0','UTF-8','yes');		// styleSheet		$objWriter->startElement('styleSheet');		$objWriter->writeAttribute('xml:space', 'preserve');		$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main');			// numFmts			$objWriter->startElement('numFmts');			$objWriter->writeAttribute('count', $this->getParentWriter()->getNumFmtHashTable()->count());				// numFmt				for ($i = 0; $i < $this->getParentWriter()->getNumFmtHashTable()->count(); ++$i) {					$this->_writeNumFmt($objWriter, $this->getParentWriter()->getNumFmtHashTable()->getByIndex($i), $i);				}			$objWriter->endElement();			// fonts			$objWriter->startElement('fonts');			$objWriter->writeAttribute('count', $this->getParentWriter()->getFontHashTable()->count());				// font				for ($i = 0; $i < $this->getParentWriter()->getFontHashTable()->count(); ++$i) {					$this->_writeFont($objWriter, $this->getParentWriter()->getFontHashTable()->getByIndex($i));				}			$objWriter->endElement();			// fills			$objWriter->startElement('fills');			$objWriter->writeAttribute('count', $this->getParentWriter()->getFillHashTable()->count());				// fill				for ($i = 0; $i < $this->getParentWriter()->getFillHashTable()->count(); ++$i) {					$this->_writeFill($objWriter, $this->getParentWriter()->getFillHashTable()->getByIndex($i));				}			$objWriter->endElement();			// borders			$objWriter->startElement('borders');			$objWriter->writeAttribute('count', $this->getParentWriter()->getBordersHashTable()->count());				// border				for ($i = 0; $i < $this->getParentWriter()->getBordersHashTable()->count(); ++$i) {					$this->_writeBorder($objWriter, $this->getParentWriter()->getBordersHashTable()->getByIndex($i));				}			$objWriter->endElement();			// cellStyleXfs			$objWriter->startElement('cellStyleXfs');			$objWriter->writeAttribute('count', 1);				// xf				$objWriter->startElement('xf');					$objWriter->writeAttribute('numFmtId', 	0);					$objWriter->writeAttribute('fontId', 	0);					$objWriter->writeAttribute('fillId', 	0);					$objWriter->writeAttribute('borderId',	0);				$objWriter->endElement();			$objWriter->endElement();			// cellXfs			$objWriter->startElement('cellXfs');			$objWriter->writeAttribute('count', count($pPHPExcel->getCellXfCollection()));				// xf				foreach ($pPHPExcel->getCellXfCollection() as $cellXf) {					$this->_writeCellStyleXf($objWriter, $cellXf, $pPHPExcel);				}			$objWriter->endElement();			// cellStyles			$objWriter->startElement('cellStyles');			$objWriter->writeAttribute('count', 1);				// cellStyle				$objWriter->startElement('cellStyle');					$objWriter->writeAttribute('name', 		'Normal');					$objWriter->writeAttribute('xfId', 		0);					$objWriter->writeAttribute('builtinId',	0);				$objWriter->endElement();			$objWriter->endElement();			// dxfs			$objWriter->startElement('dxfs');			$objWriter->writeAttribute('count', $this->getParentWriter()->getStylesConditionalHashTable()->count());				// dxf				for ($i = 0; $i < $this->getParentWriter()->getStylesConditionalHashTable()->count(); ++$i) {					$this->_writeCellStyleDxf($objWriter, $this->getParentWriter()->getStylesConditionalHashTable()->getByIndex($i)->getStyle());				}			$objWriter->endElement();			// tableStyles			$objWriter->startElement('tableStyles');			$objWriter->writeAttribute('defaultTableStyle', 'TableStyleMedium9');			$objWriter->writeAttribute('defaultPivotStyle', 'PivotTableStyle1');			$objWriter->endElement();		$objWriter->endElement();		// Return		return $objWriter->getData();	}	/**	 * Write Fill	 *	 * @param 	PHPExcel_Shared_XMLWriter 	$objWriter 		XML Writer	 * @param 	PHPExcel_Style_Fill			$pFill			Fill style	 * @throws 	PHPExcel_Writer_Exception	 */	private function _writeFill(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Fill $pFill = null)	{		// Check if this is a pattern type or gradient type		if ($pFill->getFillType() === PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR ||			$pFill->getFillType() === PHPExcel_Style_Fill::FILL_GRADIENT_PATH) {			// Gradient fill			$this->_writeGradientFill($objWriter, $pFill);		} elseif($pFill->getFillType() !== NULL) {			// Pattern fill			$this->_writePatternFill($objWriter, $pFill);		}	}	/**	 * Write Gradient Fill	 *	 * @param 	PHPExcel_Shared_XMLWriter 	$objWriter 		XML Writer	 * @param 	PHPExcel_Style_Fill			$pFill			Fill style	 * @throws 	PHPExcel_Writer_Exception	 */	private function _writeGradientFill(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Fill $pFill = null)	{		// fill		$objWriter->startElement('fill');			// gradientFill			$objWriter->startElement('gradientFill');				$objWriter->writeAttribute('type', 		$pFill->getFillType());				$objWriter->writeAttribute('degree', 	$pFill->getRotation());				// stop				$objWriter->startElement('stop');				$objWriter->writeAttribute('position', '0');					// color					$objWriter->startElement('color');					$objWriter->writeAttribute('rgb', $pFill->getStartColor()->getARGB());					$objWriter->endElement();				$objWriter->endElement();				// stop				$objWriter->startElement('stop');				$objWriter->writeAttribute('position', '1');					// color					$objWriter->startElement('color');					$objWriter->writeAttribute('rgb', $pFill->getEndColor()->getARGB());					$objWriter->endElement();				$objWriter->endElement();			$objWriter->endElement();		$objWriter->endElement();	}	/**	 * Write Pattern Fill	 *	 * @param 	PHPExcel_Shared_XMLWriter			$objWriter 		XML Writer	 * @param 	PHPExcel_Style_Fill					$pFill			Fill style	 * @throws 	PHPExcel_Writer_Exception	 */	private function _writePatternFill(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Fill $pFill = null)	{		// fill		$objWriter->startElement('fill');			// patternFill			$objWriter->startElement('patternFill');				$objWriter->writeAttribute('patternType', $pFill->getFillType());				if ($pFill->getFillType() !== PHPExcel_Style_Fill::FILL_NONE) {					// fgColor					if ($pFill->getStartColor()->getARGB()) {						$objWriter->startElement('fgColor');						$objWriter->writeAttribute('rgb', $pFill->getStartColor()->getARGB());						$objWriter->endElement();					}				}				if ($pFill->getFillType() !== PHPExcel_Style_Fill::FILL_NONE) {					// bgColor					if ($pFill->getEndColor()->getARGB()) {						$objWriter->startElement('bgColor');						$objWriter->writeAttribute('rgb', $pFill->getEndColor()->getARGB());						$objWriter->endElement();					}				}			$objWriter->endElement();		$objWriter->endElement();	}	/**	 * Write Font	 *	 * @param 	PHPExcel_Shared_XMLWriter		$objWriter 		XML Writer	 * @param 	PHPExcel_Style_Font				$pFont			Font style	 * @throws 	PHPExcel_Writer_Exception	 */	private function _writeFont(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Font $pFont = null)	{		// font		$objWriter->startElement('font');			//	Weird! The order of these elements actually makes a difference when opening Excel2007			//		files in Excel2003 with the compatibility pack. It's not documented behaviour,			//		and makes for a real WTF!			// 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			if ($pFont->getBold() !== NULL) {				$objWriter->startElement('b');					$objWriter->writeAttribute('val', $pFont->getBold() ? '1' : '0');				$objWriter->endElement();			}			// Italic			if ($pFont->getItalic() !== NULL) {				$objWriter->startElement('i');					$objWriter->writeAttribute('val', $pFont->getItalic() ? '1' : '0');				$objWriter->endElement();			}			// Strikethrough			if ($pFont->getStrikethrough() !== NULL) {				$objWriter->startElement('strike');				$objWriter->writeAttribute('val', $pFont->getStrikethrough() ? '1' : '0');				$objWriter->endElement();			}			// Underline			if ($pFont->getUnderline() !== NULL) {				$objWriter->startElement('u');				$objWriter->writeAttribute('val', $pFont->getUnderline());				$objWriter->endElement();			}			// Superscript / subscript			if ($pFont->getSuperScript() === TRUE || $pFont->getSubScript() === TRUE) {				$objWriter->startElement('vertAlign');				if ($pFont->getSuperScript() === TRUE) {					$objWriter->writeAttribute('val', 'superscript');				} else if ($pFont->getSubScript() === TRUE) {					$objWriter->writeAttribute('val', 'subscript');				}				$objWriter->endElement();			}			// Size			if ($pFont->getSize() !== NULL) {				$objWriter->startElement('sz');					$objWriter->writeAttribute('val', $pFont->getSize());				$objWriter->endElement();			}			// Foreground color			if ($pFont->getColor()->getARGB() !== NULL) {				$objWriter->startElement('color');				$objWriter->writeAttribute('rgb', $pFont->getColor()->getARGB());				$objWriter->endElement();			}			// Name			if ($pFont->getName() !== NULL) {				$objWriter->startElement('name');					$objWriter->writeAttribute('val', $pFont->getName());				$objWriter->endElement();			}		$objWriter->endElement();	}	/**	 * Write Border	 *	 * @param 	PHPExcel_Shared_XMLWriter			$objWriter 		XML Writer	 * @param 	PHPExcel_Style_Borders				$pBorders		Borders style	 * @throws 	PHPExcel_Writer_Exception	 */	private function _writeBorder(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Borders $pBorders = null)	{		// Write border		$objWriter->startElement('border');			// Diagonal?			switch ($pBorders->getDiagonalDirection()) {				case PHPExcel_Style_Borders::DIAGONAL_UP:					$objWriter->writeAttribute('diagonalUp', 	'true');					$objWriter->writeAttribute('diagonalDown', 	'false');					break;				case PHPExcel_Style_Borders::DIAGONAL_DOWN:					$objWriter->writeAttribute('diagonalUp', 	'false');					$objWriter->writeAttribute('diagonalDown', 	'true');					break;				case PHPExcel_Style_Borders::DIAGONAL_BOTH:					$objWriter->writeAttribute('diagonalUp', 	'true');					$objWriter->writeAttribute('diagonalDown', 	'true');					break;			}			// BorderPr			$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();	}	/**	 * Write Cell Style Xf	 *	 * @param 	PHPExcel_Shared_XMLWriter			$objWriter 		XML Writer	 * @param 	PHPExcel_Style						$pStyle			Style	 * @param 	PHPExcel							$pPHPExcel		Workbook	 * @throws 	PHPExcel_Writer_Exception	 */	private function _writeCellStyleXf(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style $pStyle = null, PHPExcel $pPHPExcel = null)	{		// xf		$objWriter->startElement('xf');			$objWriter->writeAttribute('xfId', 0);			$objWriter->writeAttribute('fontId', 			(int)$this->getParentWriter()->getFontHashTable()->getIndexForHashCode($pStyle->getFont()->getHashCode()));            if ($pStyle->getQuotePrefix()) {                $objWriter->writeAttribute('quotePrefix', 	    1);            }			if ($pStyle->getNumberFormat()->getBuiltInFormatCode() === false) {				$objWriter->writeAttribute('numFmtId', 			(int)($this->getParentWriter()->getNumFmtHashTable()->getIndexForHashCode($pStyle->getNumberFormat()->getHashCode()) + 164)   );			} else {				$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()));			// Apply styles?			$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');			if ($pStyle->getProtection()->getLocked() != PHPExcel_Style_Protection::PROTECTION_INHERIT || $pStyle->getProtection()->getHidden() != PHPExcel_Style_Protection::PROTECTION_INHERIT) {				$objWriter->writeAttribute('applyProtection', 'true');			}			// alignment			$objWriter->startElement('alignment');				$objWriter->writeAttribute('horizontal', 	$pStyle->getAlignment()->getHorizontal());				$objWriter->writeAttribute('vertical', 		$pStyle->getAlignment()->getVertical());				$textRotation = 0;				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();			// protection			if ($pStyle->getProtection()->getLocked() != PHPExcel_Style_Protection::PROTECTION_INHERIT || $pStyle->getProtection()->getHidden() != PHPExcel_Style_Protection::PROTECTION_INHERIT) {				$objWriter->startElement('protection');					if ($pStyle->getProtection()->getLocked() != PHPExcel_Style_Protection::PROTECTION_INHERIT) {						$objWriter->writeAttribute('locked', 		($pStyle->getProtection()->getLocked() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false'));					}					if ($pStyle->getProtection()->getHidden() != PHPExcel_Style_Protection::PROTECTION_INHERIT) {						$objWriter->writeAttribute('hidden', 		($pStyle->getProtection()->getHidden() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false'));					}				$objWriter->endElement();			}		$objWriter->endElement();	}	/**	 * Write Cell Style Dxf	 *	 * @param 	PHPExcel_Shared_XMLWriter 		$objWriter 		XML Writer	 * @param 	PHPExcel_Style					$pStyle			Style	 * @throws 	PHPExcel_Writer_Exception	 */	private function _writeCellStyleDxf(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style $pStyle = null)	{		// dxf		$objWriter->startElement('dxf');			// font			$this->_writeFont($objWriter, $pStyle->getFont());			// numFmt			$this->_writeNumFmt($objWriter, $pStyle->getNumberFormat());			// fill			$this->_writeFill($objWriter, $pStyle->getFill());			// alignment			$objWriter->startElement('alignment');				if ($pStyle->getAlignment()->getHorizontal() !== NULL) {					$objWriter->writeAttribute('horizontal', $pStyle->getAlignment()->getHorizontal());				}				if ($pStyle->getAlignment()->getVertical() !== NULL) {					$objWriter->writeAttribute('vertical', $pStyle->getAlignment()->getVertical());				}				if ($pStyle->getAlignment()->getTextRotation() !== NULL) {					$textRotation = 0;					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();			// border			$this->_writeBorder($objWriter, $pStyle->getBorders());			// protection			if (($pStyle->getProtection()->getLocked() !== NULL) ||				($pStyle->getProtection()->getHidden() !== NULL)) {				if ($pStyle->getProtection()->getLocked() !== PHPExcel_Style_Protection::PROTECTION_INHERIT ||					$pStyle->getProtection()->getHidden() !== PHPExcel_Style_Protection::PROTECTION_INHERIT) {					$objWriter->startElement('protection');						if (($pStyle->getProtection()->getLocked() !== NULL) &&							($pStyle->getProtection()->getLocked() !== PHPExcel_Style_Protection::PROTECTION_INHERIT)) {							$objWriter->writeAttribute('locked', ($pStyle->getProtection()->getLocked() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false'));						}						if (($pStyle->getProtection()->getHidden() !== NULL) &&							($pStyle->getProtection()->getHidden() !== PHPExcel_Style_Protection::PROTECTION_INHERIT)) {							$objWriter->writeAttribute('hidden', ($pStyle->getProtection()->getHidden() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false'));						}					$objWriter->endElement();				}			}		$objWriter->endElement();	}	/**	 * Write BorderPr	 *	 * @param 	PHPExcel_Shared_XMLWriter		$objWriter 		XML Writer	 * @param 	string							$pName			Element name	 * @param 	PHPExcel_Style_Border			$pBorder		Border style	 * @throws 	PHPExcel_Writer_Exception	 */	private function _writeBorderPr(PHPExcel_Shared_XMLWriter $objWriter = null, $pName = 'left', PHPExcel_Style_Border $pBorder = null)	{		// Write BorderPr		if ($pBorder->getBorderStyle() != PHPExcel_Style_Border::BORDER_NONE) {			$objWriter->startElement($pName);			$objWriter->writeAttribute('style', 	$pBorder->getBorderStyle());				// color				$objWriter->startElement('color');				$objWriter->writeAttribute('rgb', 	$pBorder->getColor()->getARGB());				$objWriter->endElement();			$objWriter->endElement();		}	}	/**	 * Write NumberFormat	 *	 * @param 	PHPExcel_Shared_XMLWriter			$objWriter 		XML Writer	 * @param 	PHPExcel_Style_NumberFormat			$pNumberFormat	Number Format	 * @param 	int									$pId			Number Format identifier	 * @throws 	PHPExcel_Writer_Exception	 */	private function _writeNumFmt(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_NumberFormat $pNumberFormat = null, $pId = 0)	{		// Translate formatcode		$formatCode = $pNumberFormat->getFormatCode();		// numFmt		if ($formatCode !== NULL) {			$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	 * @throws 	PHPExcel_Writer_Exception	 */	public function allStyles(PHPExcel $pPHPExcel = null)	{		$aStyles = $pPHPExcel->getCellXfCollection();		return $aStyles;	}	/**	 * Get an array of all conditional styles	 *	 * @param 	PHPExcel							$pPHPExcel	 * @return 	PHPExcel_Style_Conditional[]		All conditional styles in PHPExcel	 * @throws 	PHPExcel_Writer_Exception	 */	public function allConditionalStyles(PHPExcel $pPHPExcel = null)	{		// Get an array of all styles		$aStyles		= array();		$sheetCount = $pPHPExcel->getSheetCount();		for ($i = 0; $i < $sheetCount; ++$i) {			foreach ($pPHPExcel->getSheet($i)->getConditionalStylesCollection() as $conditionalStyles) {				foreach ($conditionalStyles as $conditionalStyle) {					$aStyles[] = $conditionalStyle;				}			}		}		return $aStyles;	}	/**	 * Get an array of all fills	 *	 * @param 	PHPExcel						$pPHPExcel	 * @return 	PHPExcel_Style_Fill[]		All fills in PHPExcel	 * @throws 	PHPExcel_Writer_Exception	 */	public function allFills(PHPExcel $pPHPExcel = null)	{		// Get an array of unique fills		$aFills 	= array();		// Two first fills are predefined		$fill0 = new PHPExcel_Style_Fill();		$fill0->setFillType(PHPExcel_Style_Fill::FILL_NONE);		$aFills[] = $fill0;		$fill1 = new PHPExcel_Style_Fill();		$fill1->setFillType(PHPExcel_Style_Fill::FILL_PATTERN_GRAY125);		$aFills[] = $fill1;		// The remaining fills		$aStyles 	= $this->allStyles($pPHPExcel);		foreach ($aStyles as $style) {			if (!array_key_exists($style->getFill()->getHashCode(), $aFills)) {				$aFills[ $style->getFill()->getHashCode() ] = $style->getFill();			}		}		return $aFills;	}	/**	 * Get an array of all fonts	 *	 * @param 	PHPExcel						$pPHPExcel	 * @return 	PHPExcel_Style_Font[]		All fonts in PHPExcel	 * @throws 	PHPExcel_Writer_Exception	 */	public function allFonts(PHPExcel $pPHPExcel = null)	{		// Get an array of unique fonts		$aFonts 	= array();		$aStyles 	= $this->allStyles($pPHPExcel);		foreach ($aStyles as $style) {			if (!array_key_exists($style->getFont()->getHashCode(), $aFonts)) {				$aFonts[ $style->getFont()->getHashCode() ] = $style->getFont();			}		}		return $aFonts;	}	/**	 * Get an array of all borders	 *	 * @param 	PHPExcel						$pPHPExcel	 * @return 	PHPExcel_Style_Borders[]		All borders in PHPExcel	 * @throws 	PHPExcel_Writer_Exception	 */	public function allBorders(PHPExcel $pPHPExcel = null)	{		// Get an array of unique borders		$aBorders 	= array();		$aStyles 	= $this->allStyles($pPHPExcel);		foreach ($aStyles as $style) {			if (!array_key_exists($style->getBorders()->getHashCode(), $aBorders)) {				$aBorders[ $style->getBorders()->getHashCode() ] = $style->getBorders();			}		}		return $aBorders;	}	/**	 * Get an array of all number formats	 *	 * @param 	PHPExcel								$pPHPExcel	 * @return 	PHPExcel_Style_NumberFormat[]		All number formats in PHPExcel	 * @throws 	PHPExcel_Writer_Exception	 */	public function allNumberFormats(PHPExcel $pPHPExcel = null)	{		// Get an array of unique number formats		$aNumFmts 	= array();		$aStyles 	= $this->allStyles($pPHPExcel);		foreach ($aStyles as $style) {			if ($style->getNumberFormat()->getBuiltInFormatCode() === false && !array_key_exists($style->getNumberFormat()->getHashCode(), $aNumFmts)) {				$aNumFmts[ $style->getNumberFormat()->getHashCode() ] = $style->getNumberFormat();			}		}		return $aNumFmts;	}}
 |