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();
 
   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();
 
  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']
 
  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
 
  322                || $iterator->current() instanceof MemoryDrawing
 
  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();
 
  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();
 
  423            throw new WriterException(
'Invalid parameters passed.');
 
  434        if ($drawing->getHyperlink() === 
null) {
 
  442            'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink',
 
  443            $drawing->getHyperlink()->getUrl(),
 
  444            $drawing->getHyperlink()->getTypeHyperlink()
 
An exception for terminatinating execution or to throw for unit testing.
const STORAGE_MEMORY
Temporary storage method.
getRibbonXMLData($what='all')
retrieve ribbon XML Data.
getProperties()
Get properties.
getSheetCount()
Get sheet count.
hasMacros()
The workbook has macros ?
hasRibbon()
This workbook have a custom UI ?
getDiskCachingDirectory()
Get disk caching directory.
getUseDiskCaching()
Get use disk caching where possible?
writeRelationship(XMLWriter $objWriter, $pId, $pType, $pTarget, $pTargetMode='')
Write Override content type.
writeHeaderFooterDrawingRelationships(\PhpOffice\PhpSpreadsheet\Worksheet\Worksheet $pWorksheet)
Write header/footer drawing relationships to XML format.
writeWorksheetRelationships(\PhpOffice\PhpSpreadsheet\Worksheet\Worksheet $pWorksheet, $pWorksheetId=1, $includeCharts=false)
Write worksheet relationships to XML format.
writeRelationships(Spreadsheet $spreadsheet)
Write relationships to XML format.
writeUnparsedRelationship(\PhpOffice\PhpSpreadsheet\Worksheet\Worksheet $pWorksheet, XMLWriter $objWriter, $relationship, $type)
writeWorkbookRelationships(Spreadsheet $spreadsheet)
Write workbook relationships to XML format.
writeDrawingHyperLink($objWriter, $drawing, $i)
getParentWriter()
Get parent Xlsx object.