Exemplo n.º 1
0
 /**
  * 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->setIsStyleXf($isStyleXf);
     // Add the font if not already added
     $fontIndex = $this->addFont($style->getFont());
     // 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;
 }
Exemplo n.º 2
0
 /**
  * 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 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;
 }