getXmlWriter(); $element = $this->getElement(); if (!$element instanceof \PhpOffice\PhpWord\Element\Table) { return; } $rows = $element->getRows(); $rowCount = count($rows); if ($rowCount > 0) { $xmlWriter->startElement('table:table'); $xmlWriter->writeAttribute('table:name', $element->getElementId()); $xmlWriter->writeAttribute('table:style-name', $element->getElementId()); // Write columns $this->writeColumns($xmlWriter, $element); // Write rows foreach ($rows as $row) { $this->writeRow($xmlWriter, $row); } $xmlWriter->endElement(); // table:table } } /** * Write column. */ private function writeColumns(XMLWriter $xmlWriter, TableElement $element): void { $colCount = $element->countColumns(); for ($i = 0; $i < $colCount; ++$i) { $xmlWriter->startElement('table:table-column'); $xmlWriter->writeAttribute('table:style-name', $element->getElementId() . '.' . $i); $xmlWriter->endElement(); } } /** * Write row. */ private function writeRow(XMLWriter $xmlWriter, RowElement $row): void { $xmlWriter->startElement('table:table-row'); /** @var \PhpOffice\PhpWord\Element\Row $row Type hint */ foreach ($row->getCells() as $cell) { $xmlWriter->startElement('table:table-cell'); $xmlWriter->writeAttribute('office:value-type', 'string'); $containerWriter = new Container($xmlWriter, $cell); $containerWriter->write(); $xmlWriter->endElement(); // table:table-cell } $xmlWriter->endElement(); // table:table-row } }