88use PhpOffice \PhpSpreadsheet \Shared \XMLWriter ;
99use PhpOffice \PhpSpreadsheet \Spreadsheet ;
1010use PhpOffice \PhpSpreadsheet \Worksheet \Row ;
11+ use PhpOffice \PhpSpreadsheet \Worksheet \RowCellIterator ;
1112use PhpOffice \PhpSpreadsheet \Worksheet \Worksheet ;
1213use PhpOffice \PhpSpreadsheet \Writer \Exception ;
1314use PhpOffice \PhpSpreadsheet \Writer \Ods ;
@@ -146,10 +147,10 @@ private function writeRows(XMLWriter $objWriter, Worksheet $sheet, int $sheetInd
146147 $ numberRowsRepeated = self ::NUMBER_ROWS_REPEATED_MAX ;
147148 $ span_row = 0 ;
148149 $ rows = $ sheet ->getRowIterator ();
149- while ($ rows ->valid ()) {
150+ foreach ($ rows as $ row ) {
151+ $ cellIterator = $ row ->getCellIterator ();
150152 --$ numberRowsRepeated ;
151- $ row = $ rows ->current ();
152- if ($ row ->getCellIterator ()->valid ()) {
153+ if ($ cellIterator ->valid ()) {
153154 if ($ span_row ) {
154155 $ objWriter ->startElement ('table:table-row ' );
155156 if ($ span_row > 1 ) {
@@ -168,26 +169,23 @@ private function writeRows(XMLWriter $objWriter, Worksheet $sheet, int $sheetInd
168169 $ span_row = 0 ;
169170 }
170171 $ objWriter ->startElement ('table:table-row ' );
171- $ this ->writeCells ($ objWriter , $ row );
172+ $ this ->writeCells ($ objWriter , $ cellIterator );
172173 $ objWriter ->endElement ();
173174 } else {
174175 ++$ span_row ;
175176 }
176- $ rows ->next ();
177177 }
178178 }
179179
180180 /**
181181 * Write cells of the specified row.
182182 */
183- private function writeCells (XMLWriter $ objWriter , Row $ row ): void
183+ private function writeCells (XMLWriter $ objWriter , RowCellIterator $ cells ): void
184184 {
185185 $ numberColsRepeated = self ::NUMBER_COLS_REPEATED_MAX ;
186186 $ prevColumn = -1 ;
187- $ cells = $ row ->getCellIterator ();
188- while ($ cells ->valid ()) {
187+ foreach ($ cells as $ cell ) {
189188 /** @var \PhpOffice\PhpSpreadsheet\Cell\Cell $cell */
190- $ cell = $ cells ->current ();
191189 $ column = Coordinate::columnIndexFromString ($ cell ->getColumn ()) - 1 ;
192190
193191 $ this ->writeCellSpan ($ objWriter , $ column , $ prevColumn );
@@ -250,8 +248,8 @@ private function writeCells(XMLWriter $objWriter, Row $row): void
250248 Comment::write ($ objWriter , $ cell );
251249 $ objWriter ->endElement ();
252250 $ prevColumn = $ column ;
253- $ cells ->next ();
254251 }
252+
255253 $ numberColsRepeated = $ numberColsRepeated - $ prevColumn - 1 ;
256254 if ($ numberColsRepeated > 0 ) {
257255 if ($ numberColsRepeated > 1 ) {
0 commit comments