getXmlWriter(); $element = $this->getElement(); if (!$element instanceof \PhpOffice\PhpWord\Element\Table) { return; } $rows = $element->getRows(); $rowCount = count($rows); if ($rowCount > 0) { $xmlWriter->startElement('w:tbl'); // Write columns $this->writeColumns($xmlWriter, $element); // Write style $styleWriter = new TableStyleWriter($xmlWriter, $element->getStyle()); $styleWriter->setWidth($element->getWidth()); $styleWriter->write(); // Write rows for ($i = 0; $i < $rowCount; $i++) { $this->writeRow($xmlWriter, $rows[$i]); } $xmlWriter->endElement(); // w:tbl } } /** * Write column */ private function writeColumns(XMLWriter $xmlWriter, TableElement $element) { $rows = $element->getRows(); $rowCount = count($rows); $cellWidths = array(); for ($i = 0; $i < $rowCount; $i++) { $row = $rows[$i]; $cells = $row->getCells(); if (count($cells) <= count($cellWidths)) { continue; } $cellWidths = array(); foreach ($cells as $cell) { $cellWidths[] = $cell->getWidth(); } } $xmlWriter->startElement('w:tblGrid'); foreach ($cellWidths as $width) { $xmlWriter->startElement('w:gridCol'); if ($width !== null) { $xmlWriter->writeAttribute('w:w', $width); $xmlWriter->writeAttribute('w:type', 'dxa'); } $xmlWriter->endElement(); } $xmlWriter->endElement(); // w:tblGrid } /** * Write row */ private function writeRow(XMLWriter $xmlWriter, RowElement $row) { $xmlWriter->startElement('w:tr'); // Write style $rowStyle = $row->getStyle(); if ($rowStyle instanceof RowStyle) { $styleWriter = new RowStyleWriter($xmlWriter, $rowStyle); $styleWriter->setHeight($row->getHeight()); $styleWriter->write(); } // Write cells foreach ($row->getCells() as $cell) { $this->writeCell($xmlWriter, $cell); } $xmlWriter->endElement(); // w:tr } /** * Write cell */ private function writeCell(XMLWriter $xmlWriter, CellElement $cell) { $xmlWriter->startElement('w:tc'); // Write style $cellStyle = $cell->getStyle(); if ($cellStyle instanceof CellStyle) { $styleWriter = new CellStyleWriter($xmlWriter, $cellStyle); $styleWriter->setWidth($cell->getWidth()); $styleWriter->write(); } // Write content $containerWriter = new Container($xmlWriter, $cell); $containerWriter->write(); $xmlWriter->endElement(); // w:tc } }