24 $objWriter =
new XMLWriter(XMLWriter::STORAGE_MEMORY);
28 $objWriter->startDocument(
'1.0',
'UTF-8',
'yes');
31 $objWriter->startElement(
'Relationships');
32 $objWriter->writeAttribute(
'xmlns',
'http://schemas.openxmlformats.org/package/2006/relationships');
34 $customPropertyList = $spreadsheet->
getProperties()->getCustomProperties();
35 if (!empty($customPropertyList)) {
40 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',
49 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',
57 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',
65 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',
70 $this->writeRelationShip(
73 'http://schemas.microsoft.com/office/2006/relationships/ui/extensibility',
78 $objWriter->endElement();
80 return $objWriter->getData();
95 $objWriter =
new XMLWriter(XMLWriter::STORAGE_MEMORY);
99 $objWriter->startDocument(
'1.0',
'UTF-8',
'yes');
102 $objWriter->startElement(
'Relationships');
103 $objWriter->writeAttribute(
'xmlns',
'http://schemas.openxmlformats.org/package/2006/relationships');
109 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',
117 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',
125 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings',
131 for (
$i = 0;
$i < $sheetCount; ++
$i) {
135 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet',
136 'worksheets/sheet' . (
$i + 1) .
'.xml' 142 $this->writeRelationShip(
145 'http://schemas.microsoft.com/office/2006/relationships/vbaProject',
151 $objWriter->endElement();
153 return $objWriter->getData();
175 $objWriter =
new XMLWriter(XMLWriter::STORAGE_MEMORY);
179 $objWriter->startDocument(
'1.0',
'UTF-8',
'yes');
182 $objWriter->startElement(
'Relationships');
183 $objWriter->writeAttribute(
'xmlns',
'http://schemas.openxmlformats.org/package/2006/relationships');
186 $drawingOriginalIds = [];
187 $unparsedLoadedData = $pWorksheet->getParent()->getUnparsedLoadedData();
188 if (isset($unparsedLoadedData[
'sheets'][$pWorksheet->getCodeName()][
'drawingOriginalIds'])) {
189 $drawingOriginalIds = $unparsedLoadedData[
'sheets'][$pWorksheet->getCodeName()][
'drawingOriginalIds'];
193 $charts = $pWorksheet->getChartCollection();
198 if (($pWorksheet->getDrawingCollection()->count() > 0) || (count($charts) > 0) || $drawingOriginalIds) {
204 reset($drawingOriginalIds);
205 $relPath = key($drawingOriginalIds);
206 if (isset($drawingOriginalIds[$relPath])) {
207 $rId = (int) (substr($drawingOriginalIds[$relPath], 3));
211 $relPath =
'../drawings/drawing' . $pWorksheetId .
'.xml';
215 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing',
222 foreach ($pWorksheet->getHyperlinkCollection() as $hyperlink) {
223 if (!$hyperlink->isInternal()) {
227 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink',
228 $hyperlink->getUrl(),
238 if (count($pWorksheet->getComments()) > 0) {
241 '_comments_vml' .
$i,
242 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing',
243 '../drawings/vmlDrawing' . $pWorksheetId .
'.vml' 249 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments',
250 '../comments' . $pWorksheetId .
'.xml' 256 if (count($pWorksheet->getHeaderFooter()->getImages()) > 0) {
259 '_headerfooter_vml' .
$i,
260 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing',
261 '../drawings/vmlDrawingHF' . $pWorksheetId .
'.vml' 265 $this->
writeUnparsedRelationship($pWorksheet, $objWriter,
'ctrlProps',
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/ctrlProp');
266 $this->
writeUnparsedRelationship($pWorksheet, $objWriter,
'vmlDrawings',
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing');
267 $this->
writeUnparsedRelationship($pWorksheet, $objWriter,
'printerSettings',
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings');
269 $objWriter->endElement();
271 return $objWriter->getData();
276 $unparsedLoadedData = $pWorksheet->getParent()->getUnparsedLoadedData();
277 if (!isset($unparsedLoadedData[
'sheets'][$pWorksheet->getCodeName()][$relationship])) {
281 foreach ($unparsedLoadedData[
'sheets'][$pWorksheet->getCodeName()][$relationship] as $rId => $value) {
286 $value[
'relFilePath']
306 $objWriter =
new XMLWriter(XMLWriter::STORAGE_MEMORY);
310 $objWriter->startDocument(
'1.0',
'UTF-8',
'yes');
313 $objWriter->startElement(
'Relationships');
314 $objWriter->writeAttribute(
'xmlns',
'http://schemas.openxmlformats.org/package/2006/relationships');
318 $iterator = $pWorksheet->getDrawingCollection()->getIterator();
319 while ($iterator->valid()) {
321 $iterator->current() instanceof \PhpOffice\PhpSpreadsheet\Worksheet\Drawing
326 $drawing = $iterator->current();
330 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',
331 '../media/' . str_replace(
' ',
'', $drawing->getIndexedFilename())
343 $chartCount = $pWorksheet->getChartCount();
344 if ($chartCount > 0) {
345 for (
$c = 0;
$c < $chartCount; ++
$c) {
349 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart',
350 '../charts/chart' . ++$chartRef .
'.xml' 356 $objWriter->endElement();
358 return $objWriter->getData();
373 $objWriter =
new XMLWriter(XMLWriter::STORAGE_MEMORY);
377 $objWriter->startDocument(
'1.0',
'UTF-8',
'yes');
380 $objWriter->startElement(
'Relationships');
381 $objWriter->writeAttribute(
'xmlns',
'http://schemas.openxmlformats.org/package/2006/relationships');
384 foreach ($pWorksheet->getHeaderFooter()->getImages() as
$key => $value) {
389 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',
390 '../media/' . $value->getIndexedFilename()
394 $objWriter->endElement();
396 return $objWriter->getData();
410 if ($pType !=
'' && $pTarget !=
'') {
412 $objWriter->startElement(
'Relationship');
413 $objWriter->writeAttribute(
'Id',
'rId' . $pId);
414 $objWriter->writeAttribute(
'Type', $pType);
415 $objWriter->writeAttribute(
'Target', $pTarget);
417 if ($pTargetMode !=
'') {
418 $objWriter->writeAttribute(
'TargetMode', $pTargetMode);
421 $objWriter->endElement();
434 if ($drawing->getHyperlink() === null) {
442 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink',
443 $drawing->getHyperlink()->getUrl(),
444 $drawing->getHyperlink()->getTypeHyperlink()
writeDrawingHyperLink($objWriter, $drawing, $i)
getRibbonXMLData($what='all')
retrieve ribbon XML Data.
getProperties()
Get properties.
getDiskCachingDirectory()
Get disk caching directory.
hasRibbon()
This workbook have a custom UI ?
writeUnparsedRelationship(\PhpOffice\PhpSpreadsheet\Worksheet\Worksheet $pWorksheet, XMLWriter $objWriter, $relationship, $type)
hasMacros()
The workbook has macros ?
getParentWriter()
Get parent Xlsx object.
writeWorkbookRelationships(Spreadsheet $spreadsheet)
Write workbook relationships to XML format.
writeRelationship(XMLWriter $objWriter, $pId, $pType, $pTarget, $pTargetMode='')
Write Override content type.
writeRelationships(Spreadsheet $spreadsheet)
Write relationships to XML format.
writeWorksheetRelationships(\PhpOffice\PhpSpreadsheet\Worksheet\Worksheet $pWorksheet, $pWorksheetId=1, $includeCharts=false)
Write worksheet relationships to XML format.
getUseDiskCaching()
Get use disk caching where possible?
getSheetCount()
Get sheet count.
writeHeaderFooterDrawingRelationships(\PhpOffice\PhpSpreadsheet\Worksheet\Worksheet $pWorksheet)
Write header/footer drawing relationships to XML format.