34        $objWriter->startDocument(
'1.0', 
'UTF-8', 
'yes');
 
   37        $objWriter->startElement(
'styleSheet');
 
   38        $objWriter->writeAttribute(
'xml:space', 
'preserve');
 
   39        $objWriter->writeAttribute(
'xmlns', 
'http://schemas.openxmlformats.org/spreadsheetml/2006/main');
 
   42        $objWriter->startElement(
'numFmts');
 
   50        $objWriter->endElement();
 
   53        $objWriter->startElement(
'fonts');
 
   61        $objWriter->endElement();
 
   64        $objWriter->startElement(
'fills');
 
   72        $objWriter->endElement();
 
   75        $objWriter->startElement(
'borders');
 
   83        $objWriter->endElement();
 
   86        $objWriter->startElement(
'cellStyleXfs');
 
   87        $objWriter->writeAttribute(
'count', 1);
 
   90        $objWriter->startElement(
'xf');
 
   91        $objWriter->writeAttribute(
'numFmtId', 0);
 
   92        $objWriter->writeAttribute(
'fontId', 0);
 
   93        $objWriter->writeAttribute(
'fillId', 0);
 
   94        $objWriter->writeAttribute(
'borderId', 0);
 
   95        $objWriter->endElement();
 
   97        $objWriter->endElement();
 
  100        $objWriter->startElement(
'cellXfs');
 
  108        $objWriter->endElement();
 
  111        $objWriter->startElement(
'cellStyles');
 
  112        $objWriter->writeAttribute(
'count', 1);
 
  115        $objWriter->startElement(
'cellStyle');
 
  116        $objWriter->writeAttribute(
'name', 
'Normal');
 
  117        $objWriter->writeAttribute(
'xfId', 0);
 
  118        $objWriter->writeAttribute(
'builtinId', 0);
 
  119        $objWriter->endElement();
 
  121        $objWriter->endElement();
 
  124        $objWriter->startElement(
'dxfs');
 
  132        $objWriter->endElement();
 
  135        $objWriter->startElement(
'tableStyles');
 
  136        $objWriter->writeAttribute(
'defaultTableStyle', 
'TableStyleMedium9');
 
  137        $objWriter->writeAttribute(
'defaultPivotStyle', 
'PivotTableStyle1');
 
  138        $objWriter->endElement();
 
  140        $objWriter->endElement();
 
  143        return $objWriter->getData();
 
  176        $objWriter->startElement(
'fill');
 
  179        $objWriter->startElement(
'gradientFill');
 
  180        $objWriter->writeAttribute(
'type', $pFill->
getFillType());
 
  181        $objWriter->writeAttribute(
'degree', $pFill->
getRotation());
 
  184        $objWriter->startElement(
'stop');
 
  185        $objWriter->writeAttribute(
'position', 
'0');
 
  188        $objWriter->startElement(
'color');
 
  189        $objWriter->writeAttribute(
'rgb', $pFill->
getStartColor()->getARGB());
 
  190        $objWriter->endElement();
 
  192        $objWriter->endElement();
 
  195        $objWriter->startElement(
'stop');
 
  196        $objWriter->writeAttribute(
'position', 
'1');
 
  199        $objWriter->startElement(
'color');
 
  200        $objWriter->writeAttribute(
'rgb', $pFill->
getEndColor()->getARGB());
 
  201        $objWriter->endElement();
 
  203        $objWriter->endElement();
 
  205        $objWriter->endElement();
 
  207        $objWriter->endElement();
 
  219        $objWriter->startElement(
'fill');
 
  222        $objWriter->startElement(
'patternFill');
 
  223        $objWriter->writeAttribute(
'patternType', $pFill->
getFillType());
 
  228                $objWriter->startElement(
'fgColor');
 
  229                $objWriter->writeAttribute(
'rgb', $pFill->
getStartColor()->getARGB());
 
  230                $objWriter->endElement();
 
  236                $objWriter->startElement(
'bgColor');
 
  237                $objWriter->writeAttribute(
'rgb', $pFill->
getEndColor()->getARGB());
 
  238                $objWriter->endElement();
 
  242        $objWriter->endElement();
 
  244        $objWriter->endElement();
 
  256        $objWriter->startElement(
'font');
 
  264        if ($pFont->
getBold() !== 
null) {
 
  265            $objWriter->startElement(
'b');
 
  266            $objWriter->writeAttribute(
'val', $pFont->
getBold() ? 
'1' : 
'0');
 
  267            $objWriter->endElement();
 
  272            $objWriter->startElement(
'i');
 
  273            $objWriter->writeAttribute(
'val', $pFont->
getItalic() ? 
'1' : 
'0');
 
  274            $objWriter->endElement();
 
  279            $objWriter->startElement(
'strike');
 
  281            $objWriter->endElement();
 
  286            $objWriter->startElement(
'u');
 
  287            $objWriter->writeAttribute(
'val', $pFont->
getUnderline());
 
  288            $objWriter->endElement();
 
  293            $objWriter->startElement(
'vertAlign');
 
  295                $objWriter->writeAttribute(
'val', 
'superscript');
 
  297                $objWriter->writeAttribute(
'val', 
'subscript');
 
  299            $objWriter->endElement();
 
  303        if ($pFont->
getSize() !== 
null) {
 
  304            $objWriter->startElement(
'sz');
 
  306            $objWriter->endElement();
 
  310        if ($pFont->
getColor()->getARGB() !== 
null) {
 
  311            $objWriter->startElement(
'color');
 
  312            $objWriter->writeAttribute(
'rgb', $pFont->
getColor()->getARGB());
 
  313            $objWriter->endElement();
 
  317        if ($pFont->
getName() !== 
null) {
 
  318            $objWriter->startElement(
'name');
 
  319            $objWriter->writeAttribute(
'val', $pFont->
getName());
 
  320            $objWriter->endElement();
 
  323        $objWriter->endElement();
 
  335        $objWriter->startElement(
'border');
 
  339                $objWriter->writeAttribute(
'diagonalUp', 
'true');
 
  340                $objWriter->writeAttribute(
'diagonalDown', 
'false');
 
  344                $objWriter->writeAttribute(
'diagonalUp', 
'false');
 
  345                $objWriter->writeAttribute(
'diagonalDown', 
'true');
 
  349                $objWriter->writeAttribute(
'diagonalUp', 
'true');
 
  350                $objWriter->writeAttribute(
'diagonalDown', 
'true');
 
  361        $objWriter->endElement();
 
  374        $objWriter->startElement(
'xf');
 
  375        $objWriter->writeAttribute(
'xfId', 0);
 
  377        if ($pStyle->getQuotePrefix()) {
 
  378            $objWriter->writeAttribute(
'quotePrefix', 1);
 
  381        if ($pStyle->getNumberFormat()->getBuiltInFormatCode() === 
false) {
 
  382            $objWriter->writeAttribute(
'numFmtId', (
int) ($this->
getParentWriter()->
getNumFmtHashTable()->getIndexForHashCode($pStyle->getNumberFormat()->getHashCode()) + 164));
 
  384            $objWriter->writeAttribute(
'numFmtId', (
int) $pStyle->getNumberFormat()->getBuiltInFormatCode());
 
  391        $objWriter->writeAttribute(
'applyFont', ($spreadsheet->
getDefaultStyle()->getFont()->getHashCode() != $pStyle->getFont()->getHashCode()) ? 
'1' : 
'0');
 
  392        $objWriter->writeAttribute(
'applyNumberFormat', ($spreadsheet->
getDefaultStyle()->getNumberFormat()->getHashCode() != $pStyle->getNumberFormat()->getHashCode()) ? 
'1' : 
'0');
 
  393        $objWriter->writeAttribute(
'applyFill', ($spreadsheet->
getDefaultStyle()->getFill()->getHashCode() != $pStyle->getFill()->getHashCode()) ? 
'1' : 
'0');
 
  394        $objWriter->writeAttribute(
'applyBorder', ($spreadsheet->
getDefaultStyle()->getBorders()->getHashCode() != $pStyle->getBorders()->getHashCode()) ? 
'1' : 
'0');
 
  395        $objWriter->writeAttribute(
'applyAlignment', ($spreadsheet->
getDefaultStyle()->getAlignment()->getHashCode() != $pStyle->getAlignment()->getHashCode()) ? 
'1' : 
'0');
 
  397            $objWriter->writeAttribute(
'applyProtection', 
'true');
 
  401        $objWriter->startElement(
'alignment');
 
  402        $objWriter->writeAttribute(
'horizontal', $pStyle->getAlignment()->getHorizontal());
 
  403        $objWriter->writeAttribute(
'vertical', $pStyle->getAlignment()->getVertical());
 
  406        if ($pStyle->getAlignment()->getTextRotation() >= 0) {
 
  407            $textRotation = $pStyle->getAlignment()->getTextRotation();
 
  408        } elseif ($pStyle->getAlignment()->getTextRotation() < 0) {
 
  409            $textRotation = 90 - $pStyle->getAlignment()->getTextRotation();
 
  411        $objWriter->writeAttribute(
'textRotation', $textRotation);
 
  413        $objWriter->writeAttribute(
'wrapText', ($pStyle->getAlignment()->getWrapText() ? 
'true' : 
'false'));
 
  414        $objWriter->writeAttribute(
'shrinkToFit', ($pStyle->getAlignment()->getShrinkToFit() ? 
'true' : 
'false'));
 
  416        if ($pStyle->getAlignment()->getIndent() > 0) {
 
  417            $objWriter->writeAttribute(
'indent', $pStyle->getAlignment()->getIndent());
 
  419        if ($pStyle->getAlignment()->getReadOrder() > 0) {
 
  420            $objWriter->writeAttribute(
'readingOrder', $pStyle->getAlignment()->getReadOrder());
 
  422        $objWriter->endElement();
 
  426            $objWriter->startElement(
'protection');
 
  433            $objWriter->endElement();
 
  436        $objWriter->endElement();
 
  448        $objWriter->startElement(
'dxf');
 
  451        $this->
writeFont($objWriter, $pStyle->getFont());
 
  454        $this->
writeNumFmt($objWriter, $pStyle->getNumberFormat());
 
  457        $this->
writeFill($objWriter, $pStyle->getFill());
 
  460        $objWriter->startElement(
'alignment');
 
  461        if ($pStyle->getAlignment()->getHorizontal() !== 
null) {
 
  462            $objWriter->writeAttribute(
'horizontal', $pStyle->getAlignment()->getHorizontal());
 
  464        if ($pStyle->getAlignment()->getVertical() !== 
null) {
 
  465            $objWriter->writeAttribute(
'vertical', $pStyle->getAlignment()->getVertical());
 
  468        if ($pStyle->getAlignment()->getTextRotation() !== 
null) {
 
  470            if ($pStyle->getAlignment()->getTextRotation() >= 0) {
 
  471                $textRotation = $pStyle->getAlignment()->getTextRotation();
 
  472            } elseif ($pStyle->getAlignment()->getTextRotation() < 0) {
 
  473                $textRotation = 90 - $pStyle->getAlignment()->getTextRotation();
 
  475            $objWriter->writeAttribute(
'textRotation', $textRotation);
 
  477        $objWriter->endElement();
 
  480        $this->
writeBorder($objWriter, $pStyle->getBorders());
 
  483        if (($pStyle->getProtection()->getLocked() !== 
null) || ($pStyle->getProtection()->getHidden() !== 
null)) {
 
  488                $objWriter->startElement(
'protection');
 
  490                    ($pStyle->getProtection()->getLocked() !== 
null) &&
 
  496                    ($pStyle->getProtection()->getHidden() !== 
null) &&
 
  501                $objWriter->endElement();
 
  505        $objWriter->endElement();
 
  519            $objWriter->startElement($pName);
 
  523            $objWriter->startElement(
'color');
 
  524            $objWriter->writeAttribute(
'rgb', $pBorder->
getColor()->getARGB());
 
  525            $objWriter->endElement();
 
  527            $objWriter->endElement();
 
  544        if ($formatCode !== 
null) {
 
  545            $objWriter->startElement(
'numFmt');
 
  546            $objWriter->writeAttribute(
'numFmtId', ($pId + 164));
 
  547            $objWriter->writeAttribute(
'formatCode', $formatCode);
 
  548            $objWriter->endElement();
 
  573        for (
$i = 0; 
$i < $sheetCount; ++
$i) {
 
  574            foreach ($spreadsheet->
getSheet(
$i)->getConditionalStylesCollection() as $conditionalStyles) {
 
  575                foreach ($conditionalStyles as $conditionalStyle) {
 
  576                    $aStyles[] = $conditionalStyle;
 
  603        $aStyles = $this->
allStyles($spreadsheet);
 
  605        foreach ($aStyles as 
$style) {
 
  606            if (!isset($aFills[
$style->getFill()->getHashCode()])) {
 
  607                $aFills[
$style->getFill()->getHashCode()] = 
$style->getFill();
 
  619    public function allFonts(Spreadsheet $spreadsheet)
 
  623        $aStyles = $this->
allStyles($spreadsheet);
 
  626        foreach ($aStyles as 
$style) {
 
  627            if (!isset($aFonts[
$style->getFont()->getHashCode()])) {
 
  628                $aFonts[
$style->getFont()->getHashCode()] = 
$style->getFont();
 
  640    public function allBorders(Spreadsheet $spreadsheet)
 
  644        $aStyles = $this->
allStyles($spreadsheet);
 
  647        foreach ($aStyles as 
$style) {
 
  648            if (!isset($aBorders[
$style->getBorders()->getHashCode()])) {
 
  649                $aBorders[
$style->getBorders()->getHashCode()] = 
$style->getBorders();
 
  661    public function allNumberFormats(Spreadsheet $spreadsheet)
 
  665        $aStyles = $this->
allStyles($spreadsheet);
 
  668        foreach ($aStyles as 
$style) {
 
  669            if (
$style->getNumberFormat()->getBuiltInFormatCode() === 
false && !isset($aNumFmts[
$style->getNumberFormat()->getHashCode()])) {
 
  670                $aNumFmts[
$style->getNumberFormat()->getHashCode()] = 
$style->getNumberFormat();
 
An exception for terminatinating execution or to throw for unit testing.
static formatNumber($value)
Formats a numeric value as a string for output in various output writers forcing point as decimal sep...
const STORAGE_MEMORY
Temporary storage method.
getDefaultStyle()
Get default style.
getCellXfCollection()
Get the workbook collection of cellXfs.
getSheet($pIndex)
Get sheet by index.
getSheetCount()
Get sheet count.
getColor()
Get Border Color.
getBorderStyle()
Get Border style.
getDiagonal()
Get Diagonal.
getDiagonalDirection()
Get DiagonalDirection.
getRotation()
Get Rotation.
getFillType()
Get Fill Type.
const FILL_PATTERN_GRAY125
getStartColor()
Get Start Color.
getEndColor()
Get End Color.
const FILL_GRADIENT_LINEAR
getSubscript()
Get Subscript.
getStrikethrough()
Get Strikethrough.
getSuperscript()
Get Superscript.
getUnderline()
Get Underline.
const PROTECTION_INHERIT
Protection styles.
const PROTECTION_PROTECTED
getDiskCachingDirectory()
Get disk caching directory.
getUseDiskCaching()
Get use disk caching where possible?
writeFill(XMLWriter $objWriter, Fill $pFill)
Write Fill.
writePatternFill(XMLWriter $objWriter, Fill $pFill)
Write Pattern Fill.
writeGradientFill(XMLWriter $objWriter, Fill $pFill)
Write Gradient Fill.
writeFont(XMLWriter $objWriter, Font $pFont)
Write Font.
writeBorderPr(XMLWriter $objWriter, $pName, Border $pBorder)
Write BorderPr.
allConditionalStyles(Spreadsheet $spreadsheet)
Get an array of all conditional styles.
writeCellStyleDxf(XMLWriter $objWriter, \PhpOffice\PhpSpreadsheet\Style\Style $pStyle)
Write Cell Style Dxf.
writeNumFmt(XMLWriter $objWriter, NumberFormat $pNumberFormat, $pId=0)
Write NumberFormat.
allStyles(Spreadsheet $spreadsheet)
Get an array of all styles.
writeBorder(XMLWriter $objWriter, Borders $pBorders)
Write Border.
writeStyles(Spreadsheet $spreadsheet)
Write styles to XML format.
writeCellStyleXf(XMLWriter $objWriter, \PhpOffice\PhpSpreadsheet\Style\Style $pStyle, Spreadsheet $spreadsheet)
Write Cell Style Xf.
getParentWriter()
Get parent Xlsx object.
getFontHashTable()
Get \PhpOffice\PhpSpreadsheet\Style\Font HashTable.
getStylesConditionalHashTable()
Get Conditional HashTable.
getFillHashTable()
Get Fill HashTable.
getNumFmtHashTable()
Get NumberFormat HashTable.
getBordersHashTable()
Get Borders HashTable.