8
8
use PhpOffice \PhpSpreadsheet \Shared \XMLWriter ;
9
9
use PhpOffice \PhpSpreadsheet \Spreadsheet ;
10
10
use PhpOffice \PhpSpreadsheet \Worksheet \Row ;
11
+ use PhpOffice \PhpSpreadsheet \Worksheet \RowCellIterator ;
11
12
use PhpOffice \PhpSpreadsheet \Worksheet \Worksheet ;
12
13
use PhpOffice \PhpSpreadsheet \Writer \Exception ;
13
14
use PhpOffice \PhpSpreadsheet \Writer \Ods ;
@@ -146,10 +147,10 @@ private function writeRows(XMLWriter $objWriter, Worksheet $sheet, int $sheetInd
146
147
$ numberRowsRepeated = self ::NUMBER_ROWS_REPEATED_MAX ;
147
148
$ span_row = 0 ;
148
149
$ rows = $ sheet ->getRowIterator ();
149
- while ($ rows ->valid ()) {
150
+ foreach ($ rows as $ row ) {
151
+ $ cellIterator = $ row ->getCellIterator ();
150
152
--$ numberRowsRepeated ;
151
- $ row = $ rows ->current ();
152
- if ($ row ->getCellIterator ()->valid ()) {
153
+ if ($ cellIterator ->valid ()) {
153
154
if ($ span_row ) {
154
155
$ objWriter ->startElement ('table:table-row ' );
155
156
if ($ span_row > 1 ) {
@@ -168,26 +169,23 @@ private function writeRows(XMLWriter $objWriter, Worksheet $sheet, int $sheetInd
168
169
$ span_row = 0 ;
169
170
}
170
171
$ objWriter ->startElement ('table:table-row ' );
171
- $ this ->writeCells ($ objWriter , $ row );
172
+ $ this ->writeCells ($ objWriter , $ cellIterator );
172
173
$ objWriter ->endElement ();
173
174
} else {
174
175
++$ span_row ;
175
176
}
176
- $ rows ->next ();
177
177
}
178
178
}
179
179
180
180
/**
181
181
* Write cells of the specified row.
182
182
*/
183
- private function writeCells (XMLWriter $ objWriter , Row $ row ): void
183
+ private function writeCells (XMLWriter $ objWriter , RowCellIterator $ cells ): void
184
184
{
185
185
$ numberColsRepeated = self ::NUMBER_COLS_REPEATED_MAX ;
186
186
$ prevColumn = -1 ;
187
- $ cells = $ row ->getCellIterator ();
188
- while ($ cells ->valid ()) {
187
+ foreach ($ cells as $ cell ) {
189
188
/** @var \PhpOffice\PhpSpreadsheet\Cell\Cell $cell */
190
- $ cell = $ cells ->current ();
191
189
$ column = Coordinate::columnIndexFromString ($ cell ->getColumn ()) - 1 ;
192
190
193
191
$ this ->writeCellSpan ($ objWriter , $ column , $ prevColumn );
@@ -250,8 +248,8 @@ private function writeCells(XMLWriter $objWriter, Row $row): void
250
248
Comment::write ($ objWriter , $ cell );
251
249
$ objWriter ->endElement ();
252
250
$ prevColumn = $ column ;
253
- $ cells ->next ();
254
251
}
252
+
255
253
$ numberColsRepeated = $ numberColsRepeated - $ prevColumn - 1 ;
256
254
if ($ numberColsRepeated > 0 ) {
257
255
if ($ numberColsRepeated > 1 ) {
0 commit comments