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;
 }