Пример #1
0
 /**
  * Get font record data
  *
  * @return string
  */
 public function writeFont()
 {
     $font_outline = 0;
     $font_shadow = 0;
     $icv = $this->colorIndex;
     // Index to color palette
     if ($this->font->getSuperScript()) {
         $sss = 1;
     } elseif ($this->font->getSubScript()) {
         $sss = 2;
     } else {
         $sss = 0;
     }
     $bFamily = 0;
     // Font family
     $bCharSet = \PHPExcel\Shared\Font::getCharsetFromFontName($this->font->getName());
     // Character set
     $record = 0x31;
     // Record identifier
     $reserved = 0x0;
     // Reserved
     $grbit = 0x0;
     // Font attributes
     if ($this->font->getItalic()) {
         $grbit |= 0x2;
     }
     if ($this->font->getStrikethrough()) {
         $grbit |= 0x8;
     }
     if ($font_outline) {
         $grbit |= 0x10;
     }
     if ($font_shadow) {
         $grbit |= 0x20;
     }
     $data = pack("vvvvvCCCC", $this->font->getSize() * 20, $grbit, $icv, self::mapBold($this->font->getBold()), $sss, self::mapUnderline($this->font->getUnderline()), $bFamily, $bCharSet, $reserved);
     $data .= \PHPExcel\Shared\StringHelper::UTF8toBIFF8UnicodeShort($this->font->getName());
     $length = strlen($data);
     $header = pack("vv", $record, $length);
     return $header . $data;
 }
Пример #2
0
 /**
  * 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');
         } elseif ($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();
 }
Пример #3
0
 /**
  * Create CSS style (\PHPExcel\Style\Font)
  *
  * @param    \PHPExcel\Style\Font        $pStyle            \PHPExcel\Style\Font
  * @return    array
  */
 private function createCSSStyleFont(\PHPExcel\Style\Font $pStyle)
 {
     // Construct CSS
     $css = array();
     // Create CSS
     if ($pStyle->getBold()) {
         $css['font-weight'] = 'bold';
     }
     if ($pStyle->getUnderline() != \PHPExcel\Style\Font::UNDERLINE_NONE && $pStyle->getStrikethrough()) {
         $css['text-decoration'] = 'underline line-through';
     } elseif ($pStyle->getUnderline() != \PHPExcel\Style\Font::UNDERLINE_NONE) {
         $css['text-decoration'] = 'underline';
     } elseif ($pStyle->getStrikethrough()) {
         $css['text-decoration'] = 'line-through';
     }
     if ($pStyle->getItalic()) {
         $css['font-style'] = 'italic';
     }
     $css['color'] = '#' . $pStyle->getColor()->getRGB();
     $css['font-family'] = '\'' . $pStyle->getName() . '\'';
     $css['font-size'] = $pStyle->getSize() . 'pt';
     return $css;
 }