/** * Add a new XF writer * * @param PHPExcel_Style * @param boolean Is it a style XF? * @return int Index to XF record */ public function addXfWriter($style, $isStyleXf = false) { $xfWriter = new PHPExcel_Writer_Excel5_Xf($style); $xfWriter->setBIFFVersion($this->_BIFF_version); $xfWriter->setIsStyleXf($isStyleXf); // Add the font if not already added $fontHashCode = $style->getFont()->getHashCode(); if (isset($this->_addedFonts[$fontHashCode])) { $fontIndex = $this->_addedFonts[$fontHashCode]; } else { $countFonts = count($this->_fontWriters); $fontIndex = $countFonts < 4 ? $countFonts : $countFonts + 1; $fontWriter = new PHPExcel_Writer_Excel5_Font($style->getFont()); $fontWriter->setBIFFVersion($this->_BIFF_version); $fontWriter->setColorIndex($this->_addColor($style->getFont()->getColor()->getRGB())); $this->_fontWriters[] = $fontWriter; $this->_addedFonts[$fontHashCode] = $fontIndex; } // Assign the font index to the xf record $xfWriter->setFontIndex($fontIndex); // Background colors, best to treat these after the font so black will come after white in custom palette $xfWriter->setFgColor($this->_addColor($style->getFill()->getStartColor()->getRGB())); $xfWriter->setBgColor($this->_addColor($style->getFill()->getEndColor()->getRGB())); $xfWriter->setBottomColor($this->_addColor($style->getBorders()->getBottom()->getColor()->getRGB())); $xfWriter->setTopColor($this->_addColor($style->getBorders()->getTop()->getColor()->getRGB())); $xfWriter->setRightColor($this->_addColor($style->getBorders()->getRight()->getColor()->getRGB())); $xfWriter->setLeftColor($this->_addColor($style->getBorders()->getLeft()->getColor()->getRGB())); $xfWriter->setDiagColor($this->_addColor($style->getBorders()->getDiagonal()->getColor()->getRGB())); // Add the number format if it is not a built-in one and not already added if ($style->getNumberFormat()->getBuiltInFormatCode() === false) { $numberFormatHashCode = $style->getNumberFormat()->getHashCode(); if (isset($this->_addedNumberFormats[$numberFormatHashCode])) { $numberFormatIndex = $this->_addedNumberFormats[$numberFormatHashCode]; } else { $numberFormatIndex = 164 + count($this->_numberFormats); $this->_numberFormats[$numberFormatIndex] = $style->getNumberFormat(); $this->_addedNumberFormats[$numberFormatHashCode] = $numberFormatIndex; } } else { $numberFormatIndex = (int) $style->getNumberFormat()->getBuiltInFormatCode(); } // Assign the number format index to xf record $xfWriter->setNumberFormatIndex($numberFormatIndex); $this->_xfWriters[] = $xfWriter; $xfIndex = count($this->_xfWriters) - 1; return $xfIndex; }
/** * Add a font to added fonts * * @param PHPExcel_Style_Font $font * @return int Index to FONT record */ public function addFont(PHPExcel_Style_Font $font) { $fontHashCode = $font->getHashCode(); if (isset($this->addedFonts[$fontHashCode])) { $fontIndex = $this->addedFonts[$fontHashCode]; } else { $countFonts = count($this->fontWriters); $fontIndex = $countFonts < 4 ? $countFonts : $countFonts + 1; $fontWriter = new PHPExcel_Writer_Excel5_Font($font); $fontWriter->setColorIndex($this->addColor($font->getColor()->getRGB())); $this->fontWriters[] = $fontWriter; $this->addedFonts[$fontHashCode] = $fontIndex; } return $fontIndex; }
/** * Add a new XF writer * * @param PHPExcel_Style * @param boolean Is it a style XF? * @return int Index to XF record */ public function addXfWriter($style, $isStyleXf = false) { $xfWriter = new PHPExcel_Writer_Excel5_Xf($style); $xfWriter->setBIFFVersion($this->_BIFF_version); $xfWriter->setIsStyleXf($isStyleXf); $xfWriter->setFgColor($this->_addColor($style->getFill()->getStartColor()->getRGB())); $xfWriter->setBgColor($this->_addColor($style->getFill()->getEndColor()->getRGB())); $xfWriter->setBottomColor($this->_addColor($style->getBorders()->getBottom()->getColor()->getRGB())); $xfWriter->setTopColor($this->_addColor($style->getBorders()->getTop()->getColor()->getRGB())); $xfWriter->setRightColor($this->_addColor($style->getBorders()->getRight()->getColor()->getRGB())); $xfWriter->setLeftColor($this->_addColor($style->getBorders()->getLeft()->getColor()->getRGB())); // Add the font if not already added $fontHashCode = $style->getFont()->getHashCode(); if (isset($this->_addedFonts[$fontHashCode])) { $fontIndex = $this->_addedFonts[$fontHashCode]; } else { $countFonts = count($this->_fontWriters); $fontIndex = $countFonts < 4 ? $countFonts : $countFonts + 1; $fontWriter = new PHPExcel_Writer_Excel5_Font($style->getFont()); $fontWriter->setBIFFVersion($this->_BIFF_version); $fontWriter->setColorIndex($this->_addColor($style->getFont()->getColor()->getRGB())); $this->_fontWriters[] = $fontWriter; $this->_addedFonts[$fontHashCode] = $fontIndex; } // Assign the font index to the xf record $xfWriter->setFontIndex($fontIndex); // Add the number format if not already added $numberFormatHashCode = $style->getNumberFormat()->getHashCode(); if (isset($this->_addedNumberFormats[$numberFormatHashCode])) { $numberFormatIndex = $this->_addedNumberFormats[$numberFormatHashCode]; } else { $numberFormatIndex = 164 + count($this->_numberFormats); $this->_numberFormats[$numberFormatIndex] = $style->getNumberFormat(); $this->_addedNumberFormats[$numberFormatHashCode] = $numberFormatIndex; } // Assign the number format index to xf record $xfWriter->setNumberFormatIndex($numberFormatIndex); $this->_xfWriters[] = $xfWriter; $xfIndex = count($this->_xfWriters) - 1; return $xfIndex; }