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