RelsVBA.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  3. use PhpOffice\PhpSpreadsheet\Shared\XMLWriter;
  4. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  5. class RelsVBA extends WriterPart
  6. {
  7. /**
  8. * Write relationships for a signed VBA Project.
  9. *
  10. * @param Spreadsheet $spreadsheet
  11. *
  12. * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
  13. *
  14. * @return string XML Output
  15. */
  16. public function writeVBARelationships(Spreadsheet $spreadsheet)
  17. {
  18. // Create XML writer
  19. $objWriter = null;
  20. if ($this->getParentWriter()->getUseDiskCaching()) {
  21. $objWriter = new XMLWriter(XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
  22. } else {
  23. $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
  24. }
  25. // XML header
  26. $objWriter->startDocument('1.0', 'UTF-8', 'yes');
  27. // Relationships
  28. $objWriter->startElement('Relationships');
  29. $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
  30. $objWriter->startElement('Relationship');
  31. $objWriter->writeAttribute('Id', 'rId1');
  32. $objWriter->writeAttribute('Type', 'http://schemas.microsoft.com/office/2006/relationships/vbaProjectSignature');
  33. $objWriter->writeAttribute('Target', 'vbaProjectSignature.bin');
  34. $objWriter->endElement();
  35. $objWriter->endElement();
  36. return $objWriter->getData();
  37. }
  38. }