public static function write(PHPExcel_Shared_XMLWriter $objWriter, PHPExcel_Cell $cell) { $comments = $cell->getWorksheet()->getComments(); if (! isset($comments[$cell->getCoordinate()])) { return; } $comment = $comments[$cell->getCoordinate()]; $objWriter->startElement('office:annotation'); // $objWriter->writeAttribute('draw:style-name', 'gr1'); // $objWriter->writeAttribute('draw:text-style-name', 'P1'); $objWriter->writeAttribute('svg:width', $comment->getWidth()); $objWriter->writeAttribute('svg:height', $comment->getHeight()); $objWriter->writeAttribute('svg:x', $comment->getMarginLeft()); $objWriter->writeAttribute('svg:y', $comment->getMarginTop()); // $objWriter->writeAttribute('draw:caption-point-x', $comment->getMarginLeft()); // $objWriter->writeAttribute('draw:caption-point-y', $comment->getMarginTop()); $objWriter->writeElement('dc:creator', $comment->getAuthor()); // TODO: Not realized in PHPExcel_Comment yet. // $objWriter->writeElement('dc:date', $comment->getDate()); $objWriter->writeElement('text:p', $comment->getText() ->getPlainText()); // $objWriter->writeAttribute('draw:text-style-name', 'P1'); $objWriter->endElement(); }
/** * Write Defined Name for PrintTitles * * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer * @param PHPExcel_Worksheet $pSheet * @param int $pSheetId * @throws Exception */ private function _writeDefinedNameForPrintTitles(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $pSheetId = 0) { // definedName for PrintTitles if ($pSheet->getPageSetup()->isColumnsToRepeatAtLeftSet() || $pSheet->getPageSetup()->isRowsToRepeatAtTopSet()) { $objWriter->startElement('definedName'); $objWriter->writeAttribute('name', '_xlnm.Print_Titles'); $objWriter->writeAttribute('localSheetId', $pSheetId); // Setting string $settingString = ''; // Columns to repeat if ($pSheet->getPageSetup()->isColumnsToRepeatAtLeftSet()) { $repeat = $pSheet->getPageSetup()->getColumnsToRepeatAtLeft(); $settingString = $pSheet->getTitle() . '!$' . $repeat[0] . ':$' . $repeat[1]; } // Rows to repeat if ($pSheet->getPageSetup()->isRowsToRepeatAtTopSet()) { if ($pSheet->getPageSetup()->isColumnsToRepeatAtLeftSet()) { $settingString .= ','; } $repeat = $pSheet->getPageSetup()->getRowsToRepeatAtTop(); $settingString = $pSheet->getTitle() . '!$' . $repeat[0] . ':$' . $repeat[1]; } $objWriter->writeRaw($settingString); $objWriter->endElement(); } }
/** * Write meta.xml to XML format * * @param PHPExcel $pPHPExcel * @return string XML Output * @throws PHPExcel_Writer_Exception */ public function write(PHPExcel $pPHPExcel = null) { if (!$pPHPExcel) { $pPHPExcel = $this->getParentWriter()->getPHPExcel(); } $objWriter = null; if ($this->getParentWriter()->getUseDiskCaching()) { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); } else { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); } // XML header $objWriter->startDocument('1.0', 'UTF-8'); // Meta $objWriter->startElement('office:document-meta'); $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0'); $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/'); $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0'); $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office'); $objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#'); $objWriter->writeAttribute('office:version', '1.2'); $objWriter->startElement('office:meta'); $objWriter->writeElement('meta:initial-creator', $pPHPExcel->getProperties()->getCreator()); $objWriter->writeElement('dc:creator', $pPHPExcel->getProperties()->getCreator()); $objWriter->writeElement('meta:creation-date', date(DATE_W3C, $pPHPExcel->getProperties()->getCreated())); $objWriter->writeElement('dc:date', date(DATE_W3C, $pPHPExcel->getProperties()->getCreated())); $objWriter->writeElement('dc:title', $pPHPExcel->getProperties()->getTitle()); $objWriter->writeElement('dc:description', $pPHPExcel->getProperties()->getDescription()); $objWriter->writeElement('dc:subject', $pPHPExcel->getProperties()->getSubject()); $keywords = explode(' ', $pPHPExcel->getProperties()->getKeywords()); foreach ($keywords as $keyword) { $objWriter->writeElement('meta:keyword', $keyword); } //<meta:document-statistic meta:table-count="XXX" meta:cell-count="XXX" meta:object-count="XXX"/> $objWriter->startElement('meta:user-defined'); $objWriter->writeAttribute('meta:name', 'Company'); $objWriter->writeRaw($pPHPExcel->getProperties()->getCompany()); $objWriter->endElement(); $objWriter->startElement('meta:user-defined'); $objWriter->writeAttribute('meta:name', 'category'); $objWriter->writeRaw($pPHPExcel->getProperties()->getCategory()); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); return $objWriter->getData(); }
/** * Write relationships for a signed VBA Project * * @param PHPExcel $pPHPExcel * @return string XML Output * @throws PHPExcel_Writer_Exception */ public function writeVBARelationships(PHPExcel $pPHPExcel = null) { // Create XML writer $objWriter = null; if ($this->getParentWriter()->getUseDiskCaching()) { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); } else { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); } // XML header $objWriter->startDocument('1.0', 'UTF-8', 'yes'); // Relationships $objWriter->startElement('Relationships'); $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); $objWriter->startElement('Relationship'); $objWriter->writeAttribute('Id', 'rId1'); $objWriter->writeAttribute('Type', 'http://schemas.microsoft.com/office/2006/relationships/vbaProjectSignature'); $objWriter->writeAttribute('Target', 'vbaProjectSignature.bin'); $objWriter->endElement(); //Relationship $objWriter->endElement(); //Relationships // Return return $objWriter->getData(); }
/** * Write settings.xml to XML format * * @param PHPExcel $pPHPExcel * @return string XML Output * @throws PHPExcel_Writer_Exception */ public function write(PHPExcel $pPHPExcel = null) { if (!$pPHPExcel) { $pPHPExcel = $this->getParentWriter()->getPHPExcel(); } $objWriter = null; if ($this->getParentWriter()->getUseDiskCaching()) { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); } else { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); } // XML header $objWriter->startDocument('1.0', 'UTF-8'); // Settings $objWriter->startElement('office:document-settings'); $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0'); $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); $objWriter->writeAttribute('xmlns:config', 'urn:oasis:names:tc:opendocument:xmlns:config:1.0'); $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office'); $objWriter->writeAttribute('office:version', '1.2'); $objWriter->startElement('office:settings'); $objWriter->startElement('config:config-item-set'); $objWriter->writeAttribute('config:name', 'ooo:view-settings'); $objWriter->startElement('config:config-item-map-indexed'); $objWriter->writeAttribute('config:name', 'Views'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->startElement('config:config-item-set'); $objWriter->writeAttribute('config:name', 'ooo:configuration-settings'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); return $objWriter->getData(); }
/** * Write span * * @param PHPExcel_Shared_XMLWriter $objWriter * @param integer $curColumn * @param integer $prevColumn */ private function _writeCellSpan(PHPExcel_Shared_XMLWriter $objWriter, $curColumn, $prevColumn) { $diff = $curColumn - $prevColumn - 1; if (1 === $diff) { $objWriter->writeElement('table:table-cell'); } elseif ($diff > 1) { $objWriter->startElement('table:table-cell'); $objWriter->writeAttribute('table:number-columns-repeated', $diff); $objWriter->endElement(); } }
/** * Write calcPr * * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer * @param boolean $recalcRequired Indicate whether formulas should be recalculated before writing * * @throws PHPExcel_Writer_Exception */ private function _writeCalcPr(PHPExcel_Shared_XMLWriter $objWriter = null, $recalcRequired = true) { $objWriter->startElement('calcPr'); // Set the calcid to a higher value than Excel itself will use, otherwise Excel will always recalc // If MS Excel does do a recalc, then users opening a file in MS Excel will be prompted to save on exit // because the file has changed $objWriter->writeAttribute('calcId', '999999'); $objWriter->writeAttribute('calcMode', 'auto'); // fullCalcOnLoad isn't needed if we've recalculating for the save $objWriter->writeAttribute('calcCompleted', $recalcRequired ? 1 : 0); $objWriter->writeAttribute('fullCalcOnLoad', $recalcRequired ? 0 : 1); $objWriter->endElement(); }
/** * Write Cell Style Dxf * * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer * @param PHPExcel_Style $pStyle Style * * @throws PHPExcel_Writer_Exception */ private function _writeCellStyleDxf(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style $pStyle = null) { // dxf $objWriter->startElement('dxf'); // font $this->_writeFont($objWriter, $pStyle->getFont()); // numFmt $this->_writeNumFmt($objWriter, $pStyle->getNumberFormat()); // fill $this->_writeFill($objWriter, $pStyle->getFill()); // alignment $objWriter->startElement('alignment'); if ($pStyle->getAlignment()->getHorizontal() !== null) { $objWriter->writeAttribute('horizontal', $pStyle->getAlignment()->getHorizontal()); } if ($pStyle->getAlignment()->getVertical() !== null) { $objWriter->writeAttribute('vertical', $pStyle->getAlignment()->getVertical()); } if ($pStyle->getAlignment()->getTextRotation() !== null) { $textRotation = 0; if ($pStyle->getAlignment()->getTextRotation() >= 0) { $textRotation = $pStyle->getAlignment()->getTextRotation(); } else { if ($pStyle->getAlignment()->getTextRotation() < 0) { $textRotation = 90 - $pStyle->getAlignment()->getTextRotation(); } } $objWriter->writeAttribute('textRotation', $textRotation); } $objWriter->endElement(); // border $this->_writeBorder($objWriter, $pStyle->getBorders()); // protection if ($pStyle->getProtection()->getLocked() !== null || $pStyle->getProtection()->getHidden() !== null) { if ($pStyle->getProtection()->getLocked() !== PHPExcel_Style_Protection::PROTECTION_INHERIT || $pStyle->getProtection()->getHidden() !== PHPExcel_Style_Protection::PROTECTION_INHERIT) { $objWriter->startElement('protection'); if ($pStyle->getProtection()->getLocked() !== null && $pStyle->getProtection()->getLocked() !== PHPExcel_Style_Protection::PROTECTION_INHERIT) { $objWriter->writeAttribute('locked', $pStyle->getProtection()->getLocked() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false'); } if ($pStyle->getProtection()->getHidden() !== null && $pStyle->getProtection()->getHidden() !== PHPExcel_Style_Protection::PROTECTION_INHERIT) { $objWriter->writeAttribute('hidden', $pStyle->getProtection()->getHidden() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false'); } $objWriter->endElement(); } } $objWriter->endElement(); }
/** * Write VML comment to XML format * * @param PHPExcel_Worksheet $pWorksheet * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer * @param string $pCellReference Cell reference * @param PHPExcel_Comment $pComment Comment * @throws PHPExcel_Writer_Exception */ public function _writeVMLComment(PHPExcel_Worksheet $pWorksheet = null, 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); $cssWidth = $pComment->getWidth(); $cssHeight = $pComment->getHeight(); // 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:' . $cssWidth . ';height:' . $cssHeight . ';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 // anchor is a nice way to locate the comment sensibly with respect to the sheet's rows/columns, but // in order to do so, need to be able to convert roughly to point dimensions from the comments // width/height, which are optimized for css if (preg_match('/\\s*pt\\s*$/', $cssWidth) && preg_match('/\\s*pt\\s*$/', $cssHeight)) { // compute CSS height to an integer # pts $width = intval(preg_replace('/\\s*pt\\s*$/', '', $cssWidth)); $height = intval(preg_replace('/\\s*pt\\s*$/', '', $cssHeight)); // starting from the row/column this is being placed in try // to figure out the row column that should anchor the lower-right // corner of the comment $clearedWidth = 0; $clearedHeight = 0; $maxColumns = 2; $maxRows = 10; // loop incremenets, so decrement both to start $curColumn = $column - 1; $curRow = $row - 1; while ($clearedWidth < $width && $curColumn - $column < $maxColumns) { ++$curColumn; $dim = $pWorksheet->getColumnDimensionByColumn($curColumn, false); $clearedWidth += $dim && $dim->getWidth() > 0 ? $dim->getWidth() : 96; } while ($clearedHeight < $height && $curRow - $row < $maxRows) { ++$curRow; $dim = $pWorksheet->getRowDimension($curRow, false); $clearedHeight += $dim && $dim->getRowHeight() > 0 ? $dim->getRowHeight() : 14; } $colBump = 15; $rowBump = 10; $anchor = $column . ', ' . $colBump . ', ' . ($row - 1) . ', ' . $rowBump . ', ' . $curColumn . ', ' . max($clearedWidth - $width, 0) . ', ' . $curRow . ', ' . max($clearedHeight - $height, 0); // lower-right row offset $objWriter->writeElement('x:Anchor', $anchor); } // 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(); }
/** * Write header/footer drawing relationships to XML format * * @param PHPExcel_Worksheet $pWorksheet * * @return string XML Output * @throws PHPExcel_Writer_Exception */ public function writeHeaderFooterDrawingRelationships(PHPExcel_Worksheet $pWorksheet = null) { // Create XML writer $objWriter = null; if ($this->getParentWriter()->getUseDiskCaching()) { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); } else { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); } // XML header $objWriter->startDocument('1.0', 'UTF-8', 'yes'); // Relationships $objWriter->startElement('Relationships'); $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); // Loop through images and write relationships foreach ($pWorksheet->getHeaderFooter()->getImages() as $key => $value) { // Write relationship for image drawing $this->_writeRelationship($objWriter, $key, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', '../media/' . $value->getIndexedFilename()); } $objWriter->endElement(); // Return return $objWriter->getData(); }
/** * Write Default 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 _writeDefaultContentType(PHPExcel_Shared_XMLWriter $objWriter = null, $pPartname = '', $pContentType = '') { if ($pPartname != '' && $pContentType != '') { // Write content type $objWriter->startElement('Default'); $objWriter->writeAttribute('Extension', $pPartname); $objWriter->writeAttribute('ContentType', $pContentType); $objWriter->endElement(); } else { throw new PHPExcel_Writer_Exception("Invalid parameters passed."); } }
/** * Write Defined Name for PrintTitles * * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer * @param PHPExcel_Worksheet $pSheet * @param int $pSheetId * @throws Exception */ private function _writeDefinedNameForPrintArea(PHPExcel_Shared_XMLWriter $objWriter = null, 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()); $printArea[0] = PHPExcel_Cell::absoluteCoordinate($printArea[0]); $printArea[1] = PHPExcel_Cell::absoluteCoordinate($printArea[1]); $objWriter->writeRaw('\'' . $pSheet->getTitle() . '\'!' . implode(':', $printArea)); $objWriter->endElement(); } }
/** * Write theme to XML format * * @param PHPExcel $pPHPExcel * @return string XML Output * @throws Exception */ public function writeTheme(PHPExcel $pPHPExcel = null) { // Create XML writer $objWriter = null; if ($this->getParentWriter()->getUseDiskCaching()) { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); } else { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); } // XML header $objWriter->startDocument('1.0', 'UTF-8', 'yes'); // a:theme $objWriter->startElement('a:theme'); $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main'); $objWriter->writeAttribute('name', 'Office Theme'); // a:themeElements $objWriter->startElement('a:themeElements'); // a:clrScheme $objWriter->startElement('a:clrScheme'); $objWriter->writeAttribute('name', 'Office'); // a:dk1 $objWriter->startElement('a:dk1'); // a:sysClr $objWriter->startElement('a:sysClr'); $objWriter->writeAttribute('val', 'windowText'); $objWriter->writeAttribute('lastClr', '000000'); $objWriter->endElement(); $objWriter->endElement(); // a:lt1 $objWriter->startElement('a:lt1'); // a:sysClr $objWriter->startElement('a:sysClr'); $objWriter->writeAttribute('val', 'window'); $objWriter->writeAttribute('lastClr', 'FFFFFF'); $objWriter->endElement(); $objWriter->endElement(); // a:dk2 $objWriter->startElement('a:dk2'); // a:sysClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', '1F497D'); $objWriter->endElement(); $objWriter->endElement(); // a:lt2 $objWriter->startElement('a:lt2'); // a:sysClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', 'EEECE1'); $objWriter->endElement(); $objWriter->endElement(); // a:accent1 $objWriter->startElement('a:accent1'); // a:sysClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', '4F81BD'); $objWriter->endElement(); $objWriter->endElement(); // a:accent2 $objWriter->startElement('a:accent2'); // a:sysClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', 'C0504D'); $objWriter->endElement(); $objWriter->endElement(); // a:accent3 $objWriter->startElement('a:accent3'); // a:sysClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', '9BBB59'); $objWriter->endElement(); $objWriter->endElement(); // a:accent4 $objWriter->startElement('a:accent4'); // a:sysClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', '8064A2'); $objWriter->endElement(); $objWriter->endElement(); // a:accent5 $objWriter->startElement('a:accent5'); // a:sysClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', '4BACC6'); $objWriter->endElement(); $objWriter->endElement(); // a:accent6 $objWriter->startElement('a:accent6'); // a:sysClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', 'F79646'); $objWriter->endElement(); $objWriter->endElement(); // a:hlink $objWriter->startElement('a:hlink'); // a:sysClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', '0000FF'); $objWriter->endElement(); $objWriter->endElement(); // a:folHlink $objWriter->startElement('a:folHlink'); // a:sysClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', '800080'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:fontScheme $objWriter->startElement('a:fontScheme'); $objWriter->writeAttribute('name', 'Office'); // a:majorFont $objWriter->startElement('a:majorFont'); // a:latin $objWriter->startElement('a:latin'); $objWriter->writeAttribute('typeface', 'Cambria'); $objWriter->endElement(); // a:ea $objWriter->startElement('a:ea'); $objWriter->writeAttribute('typeface', ''); $objWriter->endElement(); // a:cs $objWriter->startElement('a:cs'); $objWriter->writeAttribute('typeface', ''); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Jpan'); $objWriter->writeAttribute('typeface', '?? ?????'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Hang'); $objWriter->writeAttribute('typeface', '?? ??'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Hans'); $objWriter->writeAttribute('typeface', '??'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Hant'); $objWriter->writeAttribute('typeface', '????'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Arab'); $objWriter->writeAttribute('typeface', 'Times New Roman'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Hebr'); $objWriter->writeAttribute('typeface', 'Times New Roman'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Thai'); $objWriter->writeAttribute('typeface', 'Tahoma'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Ethi'); $objWriter->writeAttribute('typeface', 'Nyala'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Beng'); $objWriter->writeAttribute('typeface', 'Vrinda'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Gujr'); $objWriter->writeAttribute('typeface', 'Shruti'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Khmr'); $objWriter->writeAttribute('typeface', 'MoolBoran'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Knda'); $objWriter->writeAttribute('typeface', 'Tunga'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Guru'); $objWriter->writeAttribute('typeface', 'Raavi'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Cans'); $objWriter->writeAttribute('typeface', 'Euphemia'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Cher'); $objWriter->writeAttribute('typeface', 'Plantagenet Cherokee'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Yiii'); $objWriter->writeAttribute('typeface', 'Microsoft Yi Baiti'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Tibt'); $objWriter->writeAttribute('typeface', 'Microsoft Himalaya'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Thaa'); $objWriter->writeAttribute('typeface', 'MV Boli'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Deva'); $objWriter->writeAttribute('typeface', 'Mangal'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Telu'); $objWriter->writeAttribute('typeface', 'Gautami'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Taml'); $objWriter->writeAttribute('typeface', 'Latha'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Syrc'); $objWriter->writeAttribute('typeface', 'Estrangelo Edessa'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Orya'); $objWriter->writeAttribute('typeface', 'Kalinga'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Mlym'); $objWriter->writeAttribute('typeface', 'Kartika'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Laoo'); $objWriter->writeAttribute('typeface', 'DokChampa'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Sinh'); $objWriter->writeAttribute('typeface', 'Iskoola Pota'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Mong'); $objWriter->writeAttribute('typeface', 'Mongolian Baiti'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Viet'); $objWriter->writeAttribute('typeface', 'Times New Roman'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Uigh'); $objWriter->writeAttribute('typeface', 'Microsoft Uighur'); $objWriter->endElement(); $objWriter->endElement(); // a:minorFont $objWriter->startElement('a:minorFont'); // a:latin $objWriter->startElement('a:latin'); $objWriter->writeAttribute('typeface', 'Calibri'); $objWriter->endElement(); // a:ea $objWriter->startElement('a:ea'); $objWriter->writeAttribute('typeface', ''); $objWriter->endElement(); // a:cs $objWriter->startElement('a:cs'); $objWriter->writeAttribute('typeface', ''); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Jpan'); $objWriter->writeAttribute('typeface', '?? ?????'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Hang'); $objWriter->writeAttribute('typeface', '?? ??'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Hans'); $objWriter->writeAttribute('typeface', '??'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Hant'); $objWriter->writeAttribute('typeface', '????'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Arab'); $objWriter->writeAttribute('typeface', 'Arial'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Hebr'); $objWriter->writeAttribute('typeface', 'Arial'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Thai'); $objWriter->writeAttribute('typeface', 'Tahoma'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Ethi'); $objWriter->writeAttribute('typeface', 'Nyala'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Beng'); $objWriter->writeAttribute('typeface', 'Vrinda'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Gujr'); $objWriter->writeAttribute('typeface', 'Shruti'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Khmr'); $objWriter->writeAttribute('typeface', 'DaunPenh'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Knda'); $objWriter->writeAttribute('typeface', 'Tunga'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Guru'); $objWriter->writeAttribute('typeface', 'Raavi'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Cans'); $objWriter->writeAttribute('typeface', 'Euphemia'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Cher'); $objWriter->writeAttribute('typeface', 'Plantagenet Cherokee'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Yiii'); $objWriter->writeAttribute('typeface', 'Microsoft Yi Baiti'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Tibt'); $objWriter->writeAttribute('typeface', 'Microsoft Himalaya'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Thaa'); $objWriter->writeAttribute('typeface', 'MV Boli'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Deva'); $objWriter->writeAttribute('typeface', 'Mangal'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Telu'); $objWriter->writeAttribute('typeface', 'Gautami'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Taml'); $objWriter->writeAttribute('typeface', 'Latha'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Syrc'); $objWriter->writeAttribute('typeface', 'Estrangelo Edessa'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Orya'); $objWriter->writeAttribute('typeface', 'Kalinga'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Mlym'); $objWriter->writeAttribute('typeface', 'Kartika'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Laoo'); $objWriter->writeAttribute('typeface', 'DokChampa'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Sinh'); $objWriter->writeAttribute('typeface', 'Iskoola Pota'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Mong'); $objWriter->writeAttribute('typeface', 'Mongolian Baiti'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Viet'); $objWriter->writeAttribute('typeface', 'Arial'); $objWriter->endElement(); // a:font $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', 'Uigh'); $objWriter->writeAttribute('typeface', 'Microsoft Uighur'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:fmtScheme $objWriter->startElement('a:fmtScheme'); $objWriter->writeAttribute('name', 'Office'); // a:fillStyleLst $objWriter->startElement('a:fillStyleLst'); // a:solidFill $objWriter->startElement('a:solidFill'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); $objWriter->endElement(); $objWriter->endElement(); // a:gradFill $objWriter->startElement('a:gradFill'); $objWriter->writeAttribute('rotWithShape', '1'); // a:gsLst $objWriter->startElement('a:gsLst'); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '0'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:tint $objWriter->startElement('a:tint'); $objWriter->writeAttribute('val', '50000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '300000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '35000'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:tint $objWriter->startElement('a:tint'); $objWriter->writeAttribute('val', '37000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '300000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '100000'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:tint $objWriter->startElement('a:tint'); $objWriter->writeAttribute('val', '15000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '350000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:lin $objWriter->startElement('a:lin'); $objWriter->writeAttribute('ang', '16200000'); $objWriter->writeAttribute('scaled', '1'); $objWriter->endElement(); $objWriter->endElement(); // a:gradFill $objWriter->startElement('a:gradFill'); $objWriter->writeAttribute('rotWithShape', '1'); // a:gsLst $objWriter->startElement('a:gsLst'); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '0'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:shade $objWriter->startElement('a:shade'); $objWriter->writeAttribute('val', '51000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '130000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '80000'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:shade $objWriter->startElement('a:shade'); $objWriter->writeAttribute('val', '93000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '130000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '100000'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:shade $objWriter->startElement('a:shade'); $objWriter->writeAttribute('val', '94000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '135000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:lin $objWriter->startElement('a:lin'); $objWriter->writeAttribute('ang', '16200000'); $objWriter->writeAttribute('scaled', '0'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:lnStyleLst $objWriter->startElement('a:lnStyleLst'); // a:ln $objWriter->startElement('a:ln'); $objWriter->writeAttribute('w', '9525'); $objWriter->writeAttribute('cap', 'flat'); $objWriter->writeAttribute('cmpd', 'sng'); $objWriter->writeAttribute('algn', 'ctr'); // a:solidFill $objWriter->startElement('a:solidFill'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:shade $objWriter->startElement('a:shade'); $objWriter->writeAttribute('val', '95000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '105000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:prstDash $objWriter->startElement('a:prstDash'); $objWriter->writeAttribute('val', 'solid'); $objWriter->endElement(); $objWriter->endElement(); // a:ln $objWriter->startElement('a:ln'); $objWriter->writeAttribute('w', '25400'); $objWriter->writeAttribute('cap', 'flat'); $objWriter->writeAttribute('cmpd', 'sng'); $objWriter->writeAttribute('algn', 'ctr'); // a:solidFill $objWriter->startElement('a:solidFill'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); $objWriter->endElement(); $objWriter->endElement(); // a:prstDash $objWriter->startElement('a:prstDash'); $objWriter->writeAttribute('val', 'solid'); $objWriter->endElement(); $objWriter->endElement(); // a:ln $objWriter->startElement('a:ln'); $objWriter->writeAttribute('w', '38100'); $objWriter->writeAttribute('cap', 'flat'); $objWriter->writeAttribute('cmpd', 'sng'); $objWriter->writeAttribute('algn', 'ctr'); // a:solidFill $objWriter->startElement('a:solidFill'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); $objWriter->endElement(); $objWriter->endElement(); // a:prstDash $objWriter->startElement('a:prstDash'); $objWriter->writeAttribute('val', 'solid'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:effectStyleLst $objWriter->startElement('a:effectStyleLst'); // a:effectStyle $objWriter->startElement('a:effectStyle'); // a:effectLst $objWriter->startElement('a:effectLst'); // a:outerShdw $objWriter->startElement('a:outerShdw'); $objWriter->writeAttribute('blurRad', '40000'); $objWriter->writeAttribute('dist', '20000'); $objWriter->writeAttribute('dir', '5400000'); $objWriter->writeAttribute('rotWithShape', '0'); // a:srgbClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', '000000'); // a:alpha $objWriter->startElement('a:alpha'); $objWriter->writeAttribute('val', '38000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:effectStyle $objWriter->startElement('a:effectStyle'); // a:effectLst $objWriter->startElement('a:effectLst'); // a:outerShdw $objWriter->startElement('a:outerShdw'); $objWriter->writeAttribute('blurRad', '40000'); $objWriter->writeAttribute('dist', '23000'); $objWriter->writeAttribute('dir', '5400000'); $objWriter->writeAttribute('rotWithShape', '0'); // a:srgbClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', '000000'); // a:alpha $objWriter->startElement('a:alpha'); $objWriter->writeAttribute('val', '35000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:effectStyle $objWriter->startElement('a:effectStyle'); // a:effectLst $objWriter->startElement('a:effectLst'); // a:outerShdw $objWriter->startElement('a:outerShdw'); $objWriter->writeAttribute('blurRad', '40000'); $objWriter->writeAttribute('dist', '23000'); $objWriter->writeAttribute('dir', '5400000'); $objWriter->writeAttribute('rotWithShape', '0'); // a:srgbClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', '000000'); // a:alpha $objWriter->startElement('a:alpha'); $objWriter->writeAttribute('val', '35000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:scene3d $objWriter->startElement('a:scene3d'); // a:camera $objWriter->startElement('a:camera'); $objWriter->writeAttribute('prst', 'orthographicFront'); // a:rot $objWriter->startElement('a:rot'); $objWriter->writeAttribute('lat', '0'); $objWriter->writeAttribute('lon', '0'); $objWriter->writeAttribute('rev', '0'); $objWriter->endElement(); $objWriter->endElement(); // a:lightRig $objWriter->startElement('a:lightRig'); $objWriter->writeAttribute('rig', 'threePt'); $objWriter->writeAttribute('dir', 't'); // a:rot $objWriter->startElement('a:rot'); $objWriter->writeAttribute('lat', '0'); $objWriter->writeAttribute('lon', '0'); $objWriter->writeAttribute('rev', '1200000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:sp3d $objWriter->startElement('a:sp3d'); // a:bevelT $objWriter->startElement('a:bevelT'); $objWriter->writeAttribute('w', '63500'); $objWriter->writeAttribute('h', '25400'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:bgFillStyleLst $objWriter->startElement('a:bgFillStyleLst'); // a:solidFill $objWriter->startElement('a:solidFill'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); $objWriter->endElement(); $objWriter->endElement(); // a:gradFill $objWriter->startElement('a:gradFill'); $objWriter->writeAttribute('rotWithShape', '1'); // a:gsLst $objWriter->startElement('a:gsLst'); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '0'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:tint $objWriter->startElement('a:tint'); $objWriter->writeAttribute('val', '40000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '350000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '40000'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:tint $objWriter->startElement('a:tint'); $objWriter->writeAttribute('val', '45000'); $objWriter->endElement(); // a:shade $objWriter->startElement('a:shade'); $objWriter->writeAttribute('val', '99000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '350000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '100000'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:shade $objWriter->startElement('a:shade'); $objWriter->writeAttribute('val', '20000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '255000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:path $objWriter->startElement('a:path'); $objWriter->writeAttribute('path', 'circle'); // a:fillToRect $objWriter->startElement('a:fillToRect'); $objWriter->writeAttribute('l', '50000'); $objWriter->writeAttribute('t', '-80000'); $objWriter->writeAttribute('r', '50000'); $objWriter->writeAttribute('b', '180000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:gradFill $objWriter->startElement('a:gradFill'); $objWriter->writeAttribute('rotWithShape', '1'); // a:gsLst $objWriter->startElement('a:gsLst'); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '0'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:tint $objWriter->startElement('a:tint'); $objWriter->writeAttribute('val', '80000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '300000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:gs $objWriter->startElement('a:gs'); $objWriter->writeAttribute('pos', '100000'); // a:schemeClr $objWriter->startElement('a:schemeClr'); $objWriter->writeAttribute('val', 'phClr'); // a:shade $objWriter->startElement('a:shade'); $objWriter->writeAttribute('val', '30000'); $objWriter->endElement(); // a:satMod $objWriter->startElement('a:satMod'); $objWriter->writeAttribute('val', '200000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:path $objWriter->startElement('a:path'); $objWriter->writeAttribute('path', 'circle'); // a:fillToRect $objWriter->startElement('a:fillToRect'); $objWriter->writeAttribute('l', '50000'); $objWriter->writeAttribute('t', '50000'); $objWriter->writeAttribute('r', '50000'); $objWriter->writeAttribute('b', '50000'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // a:objectDefaults $objWriter->writeElement('a:objectDefaults', null); // a:extraClrSchemeLst $objWriter->writeElement('a:extraClrSchemeLst', null); $objWriter->endElement(); // Return return $objWriter->getData(); }
/** * Write docProps/core.xml to XML format * * @param PHPExcel $pPHPExcel * @return string XML Output * @throws Exception */ public function writeDocPropsCore(PHPExcel $pPHPExcel = null) { // Create XML writer $objWriter = null; if ($this->getParentWriter()->getUseDiskCaching()) { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); } else { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); } // XML header $objWriter->startDocument('1.0', 'UTF-8', 'yes'); // cp:coreProperties $objWriter->startElement('cp:coreProperties'); $objWriter->writeAttribute('xmlns:cp', 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties'); $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/'); $objWriter->writeAttribute('xmlns:dcterms', 'http://purl.org/dc/terms/'); $objWriter->writeAttribute('xmlns:dcmitype', 'http://purl.org/dc/dcmitype/'); $objWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); // dc:creator $objWriter->writeElement('dc:creator', $pPHPExcel->getProperties()->getCreator()); // cp:lastModifiedBy $objWriter->writeElement('cp:lastModifiedBy', $pPHPExcel->getProperties()->getLastModifiedBy()); // dcterms:created $objWriter->startElement('dcterms:created'); $objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF'); $objWriter->writeRaw(date(DATE_W3C, $pPHPExcel->getProperties()->getCreated())); $objWriter->endElement(); // dcterms:modified $objWriter->startElement('dcterms:modified'); $objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF'); $objWriter->writeRaw(date(DATE_W3C, $pPHPExcel->getProperties()->getModified())); $objWriter->endElement(); // dc:title $objWriter->writeElement('dc:title', $pPHPExcel->getProperties()->getTitle()); // dc:description $objWriter->writeElement('dc:description', $pPHPExcel->getProperties()->getDescription()); // dc:subject $objWriter->writeElement('dc:subject', $pPHPExcel->getProperties()->getSubject()); // cp:keywords $objWriter->writeElement('cp:keywords', $pPHPExcel->getProperties()->getKeywords()); // cp:category $objWriter->writeElement('cp:category', $pPHPExcel->getProperties()->getCategory()); $objWriter->endElement(); // Return return $objWriter->getData(); }
/** * 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 = null, 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(); } }
/** * Write NumberFormat * * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer * @param PHPExcel_Style_NumberFormat $pNumberFormat Number Format * @param int $pId Number Format identifier * @throws Exception */ private function _writeNumFmt(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_NumberFormat $pNumberFormat = null, $pId = 0) { // Translate formatcode $formatCode = $pNumberFormat->getFormatCode(); // numFmt $objWriter->startElement('numFmt'); $objWriter->writeAttribute('numFmtId', $pId + 164); $objWriter->writeAttribute('formatCode', $formatCode); $objWriter->endElement(); }
/** * Write LegacyDrawingHF * * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer * @param PHPExcel_Worksheet $pSheet Worksheet * @throws Exception */ private function _writeLegacyDrawingHF(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) { // If sheet contains comments, add the relationships if (count($pSheet->getHeaderFooter()->getImages()) > 0) { $objWriter->startElement('legacyDrawingHF'); $objWriter->writeAttribute('r:id', 'rId_headerfooter_vml1'); $objWriter->endElement(); } }
/** * Write styles.xml to XML format * * @param PHPExcel $pPHPExcel * @return string XML Output * @throws PHPExcel_Writer_Exception */ public function write(PHPExcel $pPHPExcel = null) { if (! $pPHPExcel) { $pPHPExcel = $this->getParentWriter()->getPHPExcel(); } $objWriter = null; if ($this->getParentWriter()->getUseDiskCaching()) { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); } else { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); } // XML header $objWriter->startDocument('1.0', 'UTF-8'); // Content $objWriter->startElement('office:document-styles'); $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0'); $objWriter->writeAttribute('xmlns:style', 'urn:oasis:names:tc:opendocument:xmlns:style:1.0'); $objWriter->writeAttribute('xmlns:text', 'urn:oasis:names:tc:opendocument:xmlns:text:1.0'); $objWriter->writeAttribute('xmlns:table', 'urn:oasis:names:tc:opendocument:xmlns:table:1.0'); $objWriter->writeAttribute('xmlns:draw', 'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0'); $objWriter->writeAttribute('xmlns:fo', 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0'); $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/'); $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0'); $objWriter->writeAttribute('xmlns:number', 'urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0'); $objWriter->writeAttribute('xmlns:presentation', 'urn:oasis:names:tc:opendocument:xmlns:presentation:1.0'); $objWriter->writeAttribute('xmlns:svg', 'urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0'); $objWriter->writeAttribute('xmlns:chart', 'urn:oasis:names:tc:opendocument:xmlns:chart:1.0'); $objWriter->writeAttribute('xmlns:dr3d', 'urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0'); $objWriter->writeAttribute('xmlns:math', 'http://www.w3.org/1998/Math/MathML'); $objWriter->writeAttribute('xmlns:form', 'urn:oasis:names:tc:opendocument:xmlns:form:1.0'); $objWriter->writeAttribute('xmlns:script', 'urn:oasis:names:tc:opendocument:xmlns:script:1.0'); $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office'); $objWriter->writeAttribute('xmlns:ooow', 'http://openoffice.org/2004/writer'); $objWriter->writeAttribute('xmlns:oooc', 'http://openoffice.org/2004/calc'); $objWriter->writeAttribute('xmlns:dom', 'http://www.w3.org/2001/xml-events'); $objWriter->writeAttribute('xmlns:rpt', 'http://openoffice.org/2005/report'); $objWriter->writeAttribute('xmlns:of', 'urn:oasis:names:tc:opendocument:xmlns:of:1.2'); $objWriter->writeAttribute('xmlns:xhtml', 'http://www.w3.org/1999/xhtml'); $objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#'); $objWriter->writeAttribute('xmlns:tableooo', 'http://openoffice.org/2009/table'); $objWriter->writeAttribute('xmlns:css3t', 'http://www.w3.org/TR/css3-text/'); $objWriter->writeAttribute('office:version', '1.2'); $objWriter->writeElement('office:font-face-decls'); $objWriter->writeElement('office:styles'); $objWriter->writeElement('office:automatic-styles'); $objWriter->writeElement('office:master-styles'); $objWriter->endElement(); return $objWriter->getData(); }
/** * 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(); }
/** * 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 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 Exception("Invalid parameters passed."); } }
/** * Write META-INF/manifest.xml to XML format * * @param PHPExcel $pPHPExcel * @return string XML Output * @throws PHPExcel_Writer_Exception */ public function writeManifest(PHPExcel $pPHPExcel = null) { if (!$pPHPExcel) { $pPHPExcel = $this->getParentWriter()->getPHPExcel(); } $objWriter = null; if ($this->getParentWriter()->getUseDiskCaching()) { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); } else { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); } // XML header $objWriter->startDocument('1.0', 'UTF-8'); // Manifest $objWriter->startElement('manifest:manifest'); $objWriter->writeAttribute('xmlns:manifest', 'urn:oasis:names:tc:opendocument:xmlns:manifest:1.0'); $objWriter->writeAttribute('manifest:version', '1.2'); $objWriter->startElement('manifest:file-entry'); $objWriter->writeAttribute('manifest:full-path', '/'); $objWriter->writeAttribute('manifest:version', '1.2'); $objWriter->writeAttribute('manifest:media-type', 'application/vnd.oasis.opendocument.spreadsheet'); $objWriter->endElement(); $objWriter->startElement('manifest:file-entry'); $objWriter->writeAttribute('manifest:full-path', 'meta.xml'); $objWriter->writeAttribute('manifest:media-type', 'text/xml'); $objWriter->endElement(); $objWriter->startElement('manifest:file-entry'); $objWriter->writeAttribute('manifest:full-path', 'settings.xml'); $objWriter->writeAttribute('manifest:media-type', 'text/xml'); $objWriter->endElement(); $objWriter->startElement('manifest:file-entry'); $objWriter->writeAttribute('manifest:full-path', 'content.xml'); $objWriter->writeAttribute('manifest:media-type', 'text/xml'); $objWriter->endElement(); $objWriter->startElement('manifest:file-entry'); $objWriter->writeAttribute('manifest:full-path', 'Thumbnails/thumbnail.png'); $objWriter->writeAttribute('manifest:media-type', 'image/png'); $objWriter->endElement(); $objWriter->startElement('manifest:file-entry'); $objWriter->writeAttribute('manifest:full-path', 'styles.xml'); $objWriter->writeAttribute('manifest:media-type', 'text/xml'); $objWriter->endElement(); $objWriter->endElement(); return $objWriter->getData(); }
/** * Write VML comment to XML format * * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer * @param string $pCellReference Cell reference * @param PHPExcel_Comment $pComment Comment * @throws Exception */ public 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(); }
/** * 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_String::ControlCharacterPHP2OOXML($element->getText())); $objWriter->endElement(); $objWriter->endElement(); } }
/** * 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 */ public 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(); }
/** * Write docProps/custom.xml to XML format * * @param PHPExcel $pPHPExcel * * @return string XML Output * @throws PHPExcel_Writer_Exception */ public function writeDocPropsCustom(PHPExcel $pPHPExcel = null) { $customPropertyList = $pPHPExcel->getProperties()->getCustomProperties(); if (empty($customPropertyList)) { return; } // Create XML writer $objWriter = null; if ($this->getParentWriter()->getUseDiskCaching()) { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); } else { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); } // XML header $objWriter->startDocument('1.0', 'UTF-8', 'yes'); // cp:coreProperties $objWriter->startElement('Properties'); $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/custom-properties'); $objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes'); foreach ($customPropertyList as $key => $customProperty) { $propertyValue = $pPHPExcel->getProperties()->getCustomPropertyValue($customProperty); $propertyType = $pPHPExcel->getProperties()->getCustomPropertyType($customProperty); $objWriter->startElement('property'); $objWriter->writeAttribute('fmtid', '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}'); $objWriter->writeAttribute('pid', $key + 2); $objWriter->writeAttribute('name', $customProperty); switch ($propertyType) { case 'i': $objWriter->writeElement('vt:i4', $propertyValue); break; case 'f': $objWriter->writeElement('vt:r8', $propertyValue); break; case 'b': $objWriter->writeElement('vt:bool', $propertyValue ? 'true' : 'false'); break; case 'd': $objWriter->startElement('vt:filetime'); $objWriter->writeRawData(date(DATE_W3C, $propertyValue)); $objWriter->endElement(); break; default: $objWriter->writeElement('vt:lpwstr', $propertyValue); break; } $objWriter->endElement(); } $objWriter->endElement(); // Return return $objWriter->getData(); }
/** * Write fonts to XML format * * @param PHPExcel_Shared_XMLWriter $objWriter * @param string $latinFont * @param array of string $fontSet * * @return string XML Output * @throws PHPExcel_Writer_Exception */ private function _writeFonts($objWriter, $latinFont, $fontSet) { // a:latin $objWriter->startElement('a:latin'); $objWriter->writeAttribute('typeface', $latinFont); $objWriter->endElement(); // a:ea $objWriter->startElement('a:ea'); $objWriter->writeAttribute('typeface', ''); $objWriter->endElement(); // a:cs $objWriter->startElement('a:cs'); $objWriter->writeAttribute('typeface', ''); $objWriter->endElement(); foreach ($fontSet as $fontScript => $typeface) { $objWriter->startElement('a:font'); $objWriter->writeAttribute('script', $fontScript); $objWriter->writeAttribute('typeface', $typeface); $objWriter->endElement(); } }
/** * Write Override content type * * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer * @param string $pPartname Part name * @param string $pContentType Content type * @throws 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 Exception("Invalid parameters passed."); } }
/** * Write Rich Text * * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer * @param PHPExcel_RichText $pRichText Rich text * @throws Exception */ public function writeRichText(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_RichText $pRichText = null) { // Loop trough rich text elements $elements = $pRichText->getRichTextElements(); foreach ($elements as $element) { // r $objWriter->startElement('r'); // rPr if ($element instanceof PHPExcel_RichText_Run) { // rPr $objWriter->startElement('rPr'); // rFont $objWriter->startElement('rFont'); $objWriter->writeAttribute('val', $element->getFont()->getName()); $objWriter->endElement(); // Bold $objWriter->startElement('b'); $objWriter->writeAttribute('val', $element->getFont()->getBold() ? 'true' : 'false'); $objWriter->endElement(); // Italic $objWriter->startElement('i'); $objWriter->writeAttribute('val', $element->getFont()->getItalic() ? 'true' : 'false'); $objWriter->endElement(); // Striketrough $objWriter->startElement('strike'); $objWriter->writeAttribute('val', $element->getFont()->getStriketrough() ? 'true' : 'false'); $objWriter->endElement(); // Color $objWriter->startElement('color'); $objWriter->writeAttribute('rgb', $element->getFont()->getColor()->getARGB()); $objWriter->endElement(); // Size $objWriter->startElement('sz'); $objWriter->writeAttribute('val', $element->getFont()->getSize()); $objWriter->endElement(); // Underline $objWriter->startElement('u'); $objWriter->writeAttribute('val', $element->getFont()->getUnderline()); $objWriter->endElement(); $objWriter->endElement(); } // t $objWriter->startElement('t'); $objWriter->writeAttribute('xml:space', 'preserve'); $objWriter->writeRaw(PHPExcel_Shared_String::ControlCharacterPHP2OOXML($element->getText())); $objWriter->endElement(); $objWriter->endElement(); } }
/** * 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(); } }
/** * Write relationships for additional objects of custom UI (ribbon) * * @param PHPExcel $pPHPExcel * @return string XML Output * @throws PHPExcel_Writer_Exception */ public function writeRibbonRelationships(PHPExcel $pPHPExcel = null) { // Create XML writer $objWriter = null; if ($this->getParentWriter()->getUseDiskCaching()) { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); } else { $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); } // XML header $objWriter->startDocument('1.0', 'UTF-8', 'yes'); // Relationships $objWriter->startElement('Relationships'); $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); $localRels = $pPHPExcel->getRibbonBinObjects('names'); if (is_array($localRels)) { foreach ($localRels as $aId => $aTarget) { $objWriter->startElement('Relationship'); $objWriter->writeAttribute('Id', $aId); $objWriter->writeAttribute('Type', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'); $objWriter->writeAttribute('Target', $aTarget); $objWriter->endElement(); //Relationship } } $objWriter->endElement(); //Relationships // Return return $objWriter->getData(); }