Table.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. /**
  3. * This file is part of PHPWord - A pure PHP library for reading and writing
  4. * word processing documents.
  5. *
  6. * PHPWord is free software distributed under the terms of the GNU Lesser
  7. * General Public License version 3 as published by the Free Software Foundation.
  8. *
  9. * For the full copyright and license information, please read the LICENSE
  10. * file that was distributed with this source code. For the full list of
  11. * contributors, visit https://github.com/PHPOffice/PHPWord/contributors.
  12. *
  13. * @see https://github.com/PHPOffice/PHPWord
  14. * @copyright 2010-2018 PHPWord contributors
  15. * @license http://www.gnu.org/licenses/lgpl.txt LGPL version 3
  16. */
  17. namespace PhpOffice\PhpWord\Writer\ODText\Style;
  18. /**
  19. * Table style writer
  20. *
  21. * @since 0.11.0
  22. */
  23. class Table extends AbstractStyle
  24. {
  25. /**
  26. * Write style.
  27. */
  28. public function write()
  29. {
  30. /** @var \PhpOffice\PhpWord\Style\Table $style Type hint */
  31. $style = $this->getStyle();
  32. if (!$style instanceof \PhpOffice\PhpWord\Style\Table) {
  33. return;
  34. }
  35. $xmlWriter = $this->getXmlWriter();
  36. $xmlWriter->startElement('style:style');
  37. $xmlWriter->writeAttribute('style:name', $style->getStyleName());
  38. $xmlWriter->writeAttribute('style:family', 'table');
  39. $xmlWriter->startElement('style:table-properties');
  40. //$xmlWriter->writeAttribute('style:width', 'table');
  41. $xmlWriter->writeAttribute('style:rel-width', 100);
  42. $xmlWriter->writeAttribute('table:align', 'center');
  43. $xmlWriter->writeAttributeIf($style->isBidiVisual(), 'style:writing-mode', 'rl-tb');
  44. $xmlWriter->endElement(); // style:table-properties
  45. $xmlWriter->endElement(); // style:style
  46. $cellWidths = $style->getColumnWidths();
  47. $countCellWidths = $cellWidths === null ? 0 : count($cellWidths);
  48. for ($i = 0; $i < $countCellWidths; $i++) {
  49. $width = $cellWidths[$i];
  50. $xmlWriter->startElement('style:style');
  51. $xmlWriter->writeAttribute('style:name', $style->getStyleName() . '.' . $i);
  52. $xmlWriter->writeAttribute('style:family', 'table-column');
  53. $xmlWriter->startElement('style:table-column-properties');
  54. $xmlWriter->writeAttribute('style:column-width', number_format($width * 0.0017638889, 2, '.', '') . 'cm');
  55. $xmlWriter->endElement(); // style:table-column-properties
  56. $xmlWriter->endElement(); // style:style
  57. }
  58. }
  59. }