17
17
18
18
namespace PhpOffice \PhpWord \Writer \ODText \Element ;
19
19
20
+ use PhpOffice \Common \XMLWriter ;
21
+ use PhpOffice \PhpWord \Element \Row as RowElement ;
22
+ use PhpOffice \PhpWord \Element \Table as TableElement ;
23
+
20
24
/**
21
25
* Table element writer
22
26
*
@@ -36,32 +40,59 @@ public function write()
36
40
}
37
41
$ rows = $ element ->getRows ();
38
42
$ rowCount = count ($ rows );
39
- $ colCount = $ element ->countColumns ();
40
43
41
44
if ($ rowCount > 0 ) {
42
45
$ xmlWriter ->startElement ('table:table ' );
43
46
$ xmlWriter ->writeAttribute ('table:name ' , $ element ->getElementId ());
44
47
$ xmlWriter ->writeAttribute ('table:style ' , $ element ->getElementId ());
45
48
46
- $ xmlWriter ->startElement ('table:table-column ' );
47
- $ xmlWriter ->writeAttribute ('table:number-columns-repeated ' , $ colCount );
48
- $ xmlWriter ->endElement (); // table:table-column
49
+ // Write columns
50
+ $ this ->writeColumns ($ xmlWriter , $ element );
49
51
52
+ // Write rows
50
53
foreach ($ rows as $ row ) {
51
- $ xmlWriter ->startElement ('table:table-row ' );
52
- /** @var $row \PhpOffice\PhpWord\Element\Row Type hint */
53
- foreach ($ row ->getCells () as $ cell ) {
54
- $ xmlWriter ->startElement ('table:table-cell ' );
55
- $ xmlWriter ->writeAttribute ('office:value-type ' , 'string ' );
56
-
57
- $ containerWriter = new Container ($ xmlWriter , $ cell );
58
- $ containerWriter ->write ();
59
-
60
- $ xmlWriter ->endElement (); // table:table-cell
61
- }
62
- $ xmlWriter ->endElement (); // table:table-row
54
+ $ this ->writeRow ($ xmlWriter , $ row );
63
55
}
64
56
$ xmlWriter ->endElement (); // table:table
65
57
}
66
58
}
59
+
60
+ /**
61
+ * Write column.
62
+ *
63
+ * @param \PhpOffice\Common\XMLWriter $xmlWriter
64
+ * @param \PhpOffice\PhpWord\Element\Table $element
65
+ */
66
+ private function writeColumns (XMLWriter $ xmlWriter , TableElement $ element )
67
+ {
68
+ $ colCount = $ element ->countColumns ();
69
+
70
+ for ($ i = 0 ; $ i < $ colCount ; $ i ++) {
71
+ $ xmlWriter ->startElement ('table:table-column ' );
72
+ $ xmlWriter ->writeAttribute ('table:style-name ' , $ element ->getElementId () . '. ' . $ i );
73
+ $ xmlWriter ->endElement ();
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Write row.
79
+ *
80
+ * @param \PhpOffice\Common\XMLWriter $xmlWriter
81
+ * @param \PhpOffice\PhpWord\Element\Row $row
82
+ */
83
+ private function writeRow (XMLWriter $ xmlWriter , RowElement $ row )
84
+ {
85
+ $ xmlWriter ->startElement ('table:table-row ' );
86
+ /** @var $row \PhpOffice\PhpWord\Element\Row Type hint */
87
+ foreach ($ row ->getCells () as $ cell ) {
88
+ $ xmlWriter ->startElement ('table:table-cell ' );
89
+ $ xmlWriter ->writeAttribute ('office:value-type ' , 'string ' );
90
+
91
+ $ containerWriter = new Container ($ xmlWriter , $ cell );
92
+ $ containerWriter ->write ();
93
+
94
+ $ xmlWriter ->endElement (); // table:table-cell
95
+ }
96
+ $ xmlWriter ->endElement (); // table:table-row
97
+ }
67
98
}
0 commit comments