Meta.php 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheet\Writer\Ods;
  3. use PhpOffice\PhpSpreadsheet\Shared\XMLWriter;
  4. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  5. class Meta extends WriterPart
  6. {
  7. /**
  8. * Write meta.xml to XML format.
  9. *
  10. * @param Spreadsheet $spreadsheet
  11. *
  12. * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
  13. *
  14. * @return string XML Output
  15. */
  16. public function write(Spreadsheet $spreadsheet = null)
  17. {
  18. if (!$spreadsheet) {
  19. $spreadsheet = $this->getParentWriter()->getSpreadsheet();
  20. }
  21. $objWriter = null;
  22. if ($this->getParentWriter()->getUseDiskCaching()) {
  23. $objWriter = new XMLWriter(XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
  24. } else {
  25. $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
  26. }
  27. // XML header
  28. $objWriter->startDocument('1.0', 'UTF-8');
  29. // Meta
  30. $objWriter->startElement('office:document-meta');
  31. $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0');
  32. $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
  33. $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/');
  34. $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0');
  35. $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office');
  36. $objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#');
  37. $objWriter->writeAttribute('office:version', '1.2');
  38. $objWriter->startElement('office:meta');
  39. $objWriter->writeElement('meta:initial-creator', $spreadsheet->getProperties()->getCreator());
  40. $objWriter->writeElement('dc:creator', $spreadsheet->getProperties()->getCreator());
  41. $objWriter->writeElement('meta:creation-date', date(DATE_W3C, $spreadsheet->getProperties()->getCreated()));
  42. $objWriter->writeElement('dc:date', date(DATE_W3C, $spreadsheet->getProperties()->getCreated()));
  43. $objWriter->writeElement('dc:title', $spreadsheet->getProperties()->getTitle());
  44. $objWriter->writeElement('dc:description', $spreadsheet->getProperties()->getDescription());
  45. $objWriter->writeElement('dc:subject', $spreadsheet->getProperties()->getSubject());
  46. $keywords = explode(' ', $spreadsheet->getProperties()->getKeywords());
  47. foreach ($keywords as $keyword) {
  48. $objWriter->writeElement('meta:keyword', $keyword);
  49. }
  50. //<meta:document-statistic meta:table-count="XXX" meta:cell-count="XXX" meta:object-count="XXX"/>
  51. $objWriter->startElement('meta:user-defined');
  52. $objWriter->writeAttribute('meta:name', 'Company');
  53. $objWriter->writeRaw($spreadsheet->getProperties()->getCompany());
  54. $objWriter->endElement();
  55. $objWriter->startElement('meta:user-defined');
  56. $objWriter->writeAttribute('meta:name', 'category');
  57. $objWriter->writeRaw($spreadsheet->getProperties()->getCategory());
  58. $objWriter->endElement();
  59. $objWriter->endElement();
  60. $objWriter->endElement();
  61. return $objWriter->getData();
  62. }
  63. }