public function writeShapeTable(XMLWriter $objWriter, Table $shape)
{
// draw:frame
$objWriter->startElement('draw:frame');
$objWriter->writeAttribute('svg:x', Text::numberFormat(CommonDrawing::pixelsToCentimeters($shape->getOffsetX()), 3) . 'cm');
$objWriter->writeAttribute('svg:y', Text::numberFormat(CommonDrawing::pixelsToCentimeters($shape->getOffsetY()), 3) . 'cm');
$objWriter->writeAttribute('svg:height', Text::numberFormat(CommonDrawing::pixelsToCentimeters($shape->getHeight()), 3) . 'cm');
$objWriter->writeAttribute('svg:width', Text::numberFormat(CommonDrawing::pixelsToCentimeters($shape->getWidth()), 3) . 'cm');
// table:table
$objWriter->startElement('table:table');
foreach ($shape->getRows() as $keyRow => $shapeRow) {
// table:table-row
$objWriter->startElement('table:table-row');
$objWriter->writeAttribute('table:style-name', 'gr' . $this->shapeId . 'r' . $keyRow);
//@todo getFill
$numColspan = 0;
foreach ($shapeRow->getCells() as $keyCell => $shapeCell) {
if ($numColspan == 0) {
// table:table-cell
$objWriter->startElement('table:table-cell');
$objWriter->writeAttribute('table:style-name', 'gr' . $this->shapeId . 'r' . $keyRow . 'c' . $keyCell);
if ($shapeCell->getColspan() > 1) {
$objWriter->writeAttribute('table:number-columns-spanned', $shapeCell->getColspan());
$numColspan = $shapeCell->getColspan() - 1;
}
// text:p
$objWriter->startElement('text:p');
// text:span
foreach ($shapeCell->getParagraphs() as $shapeParagraph) {
foreach ($shapeParagraph->getRichTextElements() as $shapeRichText) {
if ($shapeRichText instanceof TextElement || $shapeRichText instanceof Run) {
// text:span
$objWriter->startElement('text:span');
if ($shapeRichText instanceof Run) {
$objWriter->writeAttribute('text:style-name', 'T_' . $shapeRichText->getHashCode());
}
if ($shapeRichText->hasHyperlink() === true && $shapeRichText->getHyperlink()->getUrl() != '') {
// text:a
$objWriter->startElement('text:a');
$objWriter->writeAttribute('xlink:href', $shapeRichText->getHyperlink()->getUrl());
$objWriter->text($shapeRichText->getText());
$objWriter->endElement();
} else {
$objWriter->text($shapeRichText->getText());
}
$objWriter->endElement();
} elseif ($shapeRichText instanceof BreakElement) {
// text:span
$objWriter->startElement('text:span');
// text:line-break
$objWriter->startElement('text:line-break');
$objWriter->endElement();
$objWriter->endElement();
}
}
}
// > text:p
$objWriter->endElement();
// > table:table-cell
$objWriter->endElement();
} else {
// table:covered-table-cell
$objWriter->writeElement('table:covered-table-cell');
$numColspan--;
}
}
// > table:table-row
$objWriter->endElement();
}
// > table:table
$objWriter->endElement();
// > draw:frame
$objWriter->endElement();
}