Example #1
0
 /**
  * Write VML comment to XML format
  *
  * @param     \PHPExcel\Shared\XMLWriter        $objWriter             XML Writer
  * @param    string                            $pCellReference        Cell reference
  * @param     \PHPExcel\Comment                $pComment            Comment
  * @throws     \PHPExcel\Writer\Exception
  */
 private function writeVMLComment(\PHPExcel\Shared\XMLWriter $objWriter = null, $pCellReference = 'A1', \PHPExcel\Comment $pComment = null)
 {
     // Metadata
     list($column, $row) = \PHPExcel\Cell::coordinateFromString($pCellReference);
     $column = \PHPExcel\Cell::columnIndexFromString($column);
     $id = 1024 + $column + $row;
     $id = substr($id, 0, 4);
     // v:shape
     $objWriter->startElement('v:shape');
     $objWriter->writeAttribute('id', '_x0000_s' . $id);
     $objWriter->writeAttribute('type', '#_x0000_t202');
     $objWriter->writeAttribute('style', 'position:absolute;margin-left:' . $pComment->getMarginLeft() . ';margin-top:' . $pComment->getMarginTop() . ';width:' . $pComment->getWidth() . ';height:' . $pComment->getHeight() . ';z-index:1;visibility:' . ($pComment->getVisible() ? 'visible' : 'hidden'));
     $objWriter->writeAttribute('fillcolor', '#' . $pComment->getFillColor()->getRGB());
     $objWriter->writeAttribute('o:insetmode', 'auto');
     // v:fill
     $objWriter->startElement('v:fill');
     $objWriter->writeAttribute('color2', '#' . $pComment->getFillColor()->getRGB());
     $objWriter->endElement();
     // v:shadow
     $objWriter->startElement('v:shadow');
     $objWriter->writeAttribute('on', 't');
     $objWriter->writeAttribute('color', 'black');
     $objWriter->writeAttribute('obscured', 't');
     $objWriter->endElement();
     // v:path
     $objWriter->startElement('v:path');
     $objWriter->writeAttribute('o:connecttype', 'none');
     $objWriter->endElement();
     // v:textbox
     $objWriter->startElement('v:textbox');
     $objWriter->writeAttribute('style', 'mso-direction-alt:auto');
     // div
     $objWriter->startElement('div');
     $objWriter->writeAttribute('style', 'text-align:left');
     $objWriter->endElement();
     $objWriter->endElement();
     // x:ClientData
     $objWriter->startElement('x:ClientData');
     $objWriter->writeAttribute('ObjectType', 'Note');
     // x:MoveWithCells
     $objWriter->writeElement('x:MoveWithCells', '');
     // x:SizeWithCells
     $objWriter->writeElement('x:SizeWithCells', '');
     // x:Anchor
     //$objWriter->writeElement('x:Anchor', $column . ', 15, ' . ($row - 2) . ', 10, ' . ($column + 4) . ', 15, ' . ($row + 5) . ', 18');
     // x:AutoFill
     $objWriter->writeElement('x:AutoFill', 'False');
     // x:Row
     $objWriter->writeElement('x:Row', $row - 1);
     // x:Column
     $objWriter->writeElement('x:Column', $column - 1);
     $objWriter->endElement();
     $objWriter->endElement();
 }
Example #2
0
 /**
  * Write VML comment to XML format
  *
  * @param     \PHPExcel\Shared\XMLWriter        $objWriter             XML Writer
  * @param    string                            $pReference            Reference
  * @param     \PHPExcel\Worksheet\HeaderFooterDrawing    $pImage        Image
  * @throws     \PHPExcel\Writer\Exception
  */
 private function writeVMLHeaderFooterImage(\PHPExcel\Shared\XMLWriter $objWriter = null, $pReference = '', \PHPExcel\Worksheet\HeaderFooterDrawing $pImage = null)
 {
     // Calculate object id
     preg_match('{(\\d+)}', md5($pReference), $m);
     $id = 1500 + substr($m[1], 0, 2) * 1;
     // Calculate offset
     $width = $pImage->getWidth();
     $height = $pImage->getHeight();
     $marginLeft = $pImage->getOffsetX();
     $marginTop = $pImage->getOffsetY();
     // v:shape
     $objWriter->startElement('v:shape');
     $objWriter->writeAttribute('id', $pReference);
     $objWriter->writeAttribute('o:spid', '_x0000_s' . $id);
     $objWriter->writeAttribute('type', '#_x0000_t75');
     $objWriter->writeAttribute('style', "position:absolute;margin-left:{$marginLeft}px;margin-top:{$marginTop}px;width:{$width}px;height:{$height}px;z-index:1");
     // v:imagedata
     $objWriter->startElement('v:imagedata');
     $objWriter->writeAttribute('o:relid', 'rId' . $pReference);
     $objWriter->writeAttribute('o:title', $pImage->getName());
     $objWriter->endElement();
     // o:lock
     $objWriter->startElement('o:lock');
     $objWriter->writeAttribute('v:ext', 'edit');
     $objWriter->writeAttribute('rotation', 't');
     $objWriter->endElement();
     $objWriter->endElement();
 }
Example #3
0
 /**
  * Write Defined Name for PrintTitles
  *
  * @param     \PHPExcel\Shared\XMLWriter    $objWriter         XML Writer
  * @param     \PHPExcel\Worksheet            $pSheet
  * @param     int                            $pSheetId
  * @throws     \PHPExcel\Writer\Exception
  */
 private function writeDefinedNameForPrintArea(\PHPExcel\Shared\XMLWriter $objWriter, \PHPExcel\Worksheet $pSheet = null, $pSheetId = 0)
 {
     // definedName for PrintArea
     if ($pSheet->getPageSetup()->isPrintAreaSet()) {
         $objWriter->startElement('definedName');
         $objWriter->writeAttribute('name', '_xlnm.Print_Area');
         $objWriter->writeAttribute('localSheetId', $pSheetId);
         // Setting string
         $settingString = '';
         // Print area
         $printArea = \PHPExcel\Cell::splitRange($pSheet->getPageSetup()->getPrintArea());
         $chunks = array();
         foreach ($printArea as $printAreaRect) {
             $printAreaRect[0] = \PHPExcel\Cell::absoluteReference($printAreaRect[0]);
             $printAreaRect[1] = \PHPExcel\Cell::absoluteReference($printAreaRect[1]);
             $chunks[] = '\'' . str_replace("'", "''", $pSheet->getTitle()) . '\'!' . implode(':', $printAreaRect);
         }
         $objWriter->writeRawData(implode(',', $chunks));
         $objWriter->endElement();
     }
 }
Example #4
0
 /**
  * Write NumberFormat
  *
  * @param     \PHPExcel\Shared\XMLWriter            $objWriter         XML Writer
  * @param     \PHPExcel\Style\NumberFormat            $pNumberFormat    Number Format
  * @param     int                                    $pId            Number Format identifier
  * @throws     \PHPExcel\Writer\Exception
  */
 private function writeNumFmt(\PHPExcel\Shared\XMLWriter $objWriter = null, \PHPExcel\Style\NumberFormat $pNumberFormat = null, $pId = 0)
 {
     // Translate formatcode
     $formatCode = $pNumberFormat->getFormatCode();
     // numFmt
     if ($formatCode !== null) {
         $objWriter->startElement('numFmt');
         $objWriter->writeAttribute('numFmtId', $pId + 164);
         $objWriter->writeAttribute('formatCode', $formatCode);
         $objWriter->endElement();
     }
 }
Example #5
0
 /**
  * Write Override content type
  *
  * @param     \PHPExcel\Shared\XMLWriter     $objWriter         XML Writer
  * @param     string                         $pPartname         Part name
  * @param     string                         $pContentType     Content type
  * @throws     \PHPExcel\Writer\Exception
  */
 private function writeOverrideContentType(\PHPExcel\Shared\XMLWriter $objWriter = null, $pPartname = '', $pContentType = '')
 {
     if ($pPartname != '' && $pContentType != '') {
         // Write content type
         $objWriter->startElement('Override');
         $objWriter->writeAttribute('PartName', $pPartname);
         $objWriter->writeAttribute('ContentType', $pContentType);
         $objWriter->endElement();
     } else {
         throw new \PHPExcel\Writer\Exception("Invalid parameters passed.");
     }
 }
Example #6
0
 /**
  * Write colour scheme to XML format
  *
  * @param     \PHPExcel\Shared\XMLWriter    $objWriter
  * @return string                  XML Output
  * @throws     \PHPExcel\Writer\Exception
  */
 private function writeColourScheme($objWriter)
 {
     foreach (self::$colourScheme as $colourName => $colourValue) {
         $objWriter->startElement('a:' . $colourName);
         $objWriter->startElement('a:srgbClr');
         $objWriter->writeAttribute('val', $colourValue);
         $objWriter->endElement();
         $objWriter->endElement();
     }
 }
Example #7
0
 /**
  * Write Printer Settings
  *
  * @param  \PHPExcel\Shared\XMLWriter $objWriter XML Writer
  *
  * @throws  \PHPExcel\Writer\Exception
  */
 private function writePrintSettings($objWriter)
 {
     $objWriter->startElement('c:printSettings');
     $objWriter->startElement('c:headerFooter');
     $objWriter->endElement();
     $objWriter->startElement('c:pageMargins');
     $objWriter->writeAttribute('footer', 0.3);
     $objWriter->writeAttribute('header', 0.3);
     $objWriter->writeAttribute('r', 0.7);
     $objWriter->writeAttribute('l', 0.7);
     $objWriter->writeAttribute('t', 0.75);
     $objWriter->writeAttribute('b', 0.75);
     $objWriter->endElement();
     $objWriter->startElement('c:pageSetup');
     $objWriter->writeAttribute('orientation', "portrait");
     $objWriter->endElement();
     $objWriter->endElement();
 }
Example #8
0
 /**
  * Write Override content type
  *
  * @param     \PHPExcel\Shared\XMLWriter     $objWriter         XML Writer
  * @param     int                            $pId            Relationship ID. rId will be prepended!
  * @param     string                        $pType            Relationship type
  * @param     string                         $pTarget        Relationship target
  * @param     string                         $pTargetMode    Relationship target mode
  * @throws     \PHPExcel\Writer\Exception
  */
 private function writeRelationship(\PHPExcel\Shared\XMLWriter $objWriter = null, $pId = 1, $pType = '', $pTarget = '', $pTargetMode = '')
 {
     if ($pType != '' && $pTarget != '') {
         // Write relationship
         $objWriter->startElement('Relationship');
         $objWriter->writeAttribute('Id', 'rId' . $pId);
         $objWriter->writeAttribute('Type', $pType);
         $objWriter->writeAttribute('Target', $pTarget);
         if ($pTargetMode != '') {
             $objWriter->writeAttribute('TargetMode', $pTargetMode);
         }
         $objWriter->endElement();
     } else {
         throw new \PHPExcel\Writer\Exception("Invalid parameters passed.");
     }
 }
Example #9
0
 /**
  * Write Rich Text
  *
  * @param     \PHPExcel\Shared\XMLWriter    $objWriter         XML Writer
  * @param     string|\PHPExcel\RichText    $pRichText        text string or Rich text
  * @param     string                        $prefix            Optional Namespace prefix
  * @throws     \PHPExcel\Writer\Exception
  */
 public function writeRichTextForCharts(\PHPExcel\Shared\XMLWriter $objWriter = null, $pRichText = null, $prefix = null)
 {
     if (!$pRichText instanceof \PHPExcel\RichText) {
         $textRun = $pRichText;
         $pRichText = new \PHPExcel\RichText();
         $pRichText->createTextRun($textRun);
     }
     if ($prefix !== null) {
         $prefix .= ':';
     }
     // Loop through rich text elements
     $elements = $pRichText->getRichTextElements();
     foreach ($elements as $element) {
         // r
         $objWriter->startElement($prefix . 'r');
         // rPr
         $objWriter->startElement($prefix . 'rPr');
         // Bold
         $objWriter->writeAttribute('b', $element->getFont()->getBold() ? 1 : 0);
         // Italic
         $objWriter->writeAttribute('i', $element->getFont()->getItalic() ? 1 : 0);
         // Underline
         $underlineType = $element->getFont()->getUnderline();
         switch ($underlineType) {
             case 'single':
                 $underlineType = 'sng';
                 break;
             case 'double':
                 $underlineType = 'dbl';
                 break;
         }
         $objWriter->writeAttribute('u', $underlineType);
         // Strikethrough
         $objWriter->writeAttribute('strike', $element->getFont()->getStrikethrough() ? 'sngStrike' : 'noStrike');
         // rFont
         $objWriter->startElement($prefix . 'latin');
         $objWriter->writeAttribute('typeface', $element->getFont()->getName());
         $objWriter->endElement();
         // Superscript / subscript
         //                    if ($element->getFont()->getSuperScript() || $element->getFont()->getSubScript()) {
         //                        $objWriter->startElement($prefix.'vertAlign');
         //                        if ($element->getFont()->getSuperScript()) {
         //                            $objWriter->writeAttribute('val', 'superscript');
         //                        } elseif ($element->getFont()->getSubScript()) {
         //                            $objWriter->writeAttribute('val', 'subscript');
         //                        }
         //                        $objWriter->endElement();
         //                    }
         //
         $objWriter->endElement();
         // t
         $objWriter->startElement($prefix . 't');
         //                    $objWriter->writeAttribute('xml:space', 'preserve');    //    Excel2010 accepts, Excel2007 complains
         $objWriter->writeRawData(\PHPExcel\Shared\StringHelper::controlCharacterPHP2OOXML($element->getText()));
         $objWriter->endElement();
         $objWriter->endElement();
     }
 }
Example #10
0
 /**
  * Write LegacyDrawingHF
  *
  * @param    \PHPExcel\Shared\XMLWriter        $objWriter        XML Writer
  * @param    \PHPExcel\Worksheet                $pSheet            Worksheet
  * @throws    \PHPExcel\Writer\Exception
  */
 private function writeLegacyDrawingHF(\PHPExcel\Shared\XMLWriter $objWriter = null, \PHPExcel\Worksheet $pSheet = null)
 {
     // If sheet contains images, add the relationships
     if (count($pSheet->getHeaderFooter()->getImages()) > 0) {
         $objWriter->startElement('legacyDrawingHF');
         $objWriter->writeAttribute('r:id', 'rId_headerfooter_vml1');
         $objWriter->endElement();
     }
 }