2020 */
2121class Content extends WriterPart
2222{
23- const NUMBER_COLS_REPEATED_MAX = 1024 ;
24- const NUMBER_ROWS_REPEATED_MAX = 1048576 ;
25-
2623 private Formula $ formulaConvertor ;
2724
2825 /**
@@ -142,7 +139,6 @@ private function writeSheets(XMLWriter $objWriter): void
142139 sprintf ('%s_%d_%d ' , Style::COLUMN_STYLE_PREFIX , $ sheetIndex , $ columnDimension ->getColumnNumeric ())
143140 );
144141 $ objWriter ->writeAttribute ('table:default-cell-style-name ' , 'ce0 ' );
145- // $objWriter->writeAttribute('table:number-columns-repeated', self::NUMBER_COLS_REPEATED_MAX);
146142 $ objWriter ->endElement ();
147143 }
148144 $ this ->writeRows ($ objWriter , $ spreadsheet ->getSheet ($ sheetIndex ), $ sheetIndex );
@@ -155,34 +151,33 @@ private function writeSheets(XMLWriter $objWriter): void
155151 */
156152 private function writeRows (XMLWriter $ objWriter , Worksheet $ sheet , int $ sheetIndex ): void
157153 {
158- $ numberRowsRepeated = self ::NUMBER_ROWS_REPEATED_MAX ;
159- $ span_row = 0 ;
154+ $ spanRow = 0 ;
160155 $ rows = $ sheet ->getRowIterator ();
161156 foreach ($ rows as $ row ) {
162- $ cellIterator = $ row ->getCellIterator ();
163- -- $ numberRowsRepeated ;
164- if ( $ cellIterator -> valid ()) {
165- $ objWriter -> startElement ( ' table:table-row ' );
166- if ($ span_row ) {
167- if ( $ span_row > 1 ) {
168- $ objWriter ->writeAttribute (' table:number-rows-repeated ' , ( string ) $ span_row );
169- }
170- $ objWriter -> startElement ( ' table:table-cell ' );
171- $ objWriter -> writeAttribute ( ' table:number-columns-repeated ' , ( string ) self :: NUMBER_COLS_REPEATED_MAX );
157+ $ cellIterator = $ row ->getCellIterator (iterateOnlyExistingCells: true );
158+ $ cellIterator -> rewind () ;
159+ $ rowStyleExists = $ sheet -> rowDimensionExists ( $ row -> getRowIndex ()) && $ sheet -> getRowDimension ( $ row -> getRowIndex ())-> getRowHeight () > 0 ;
160+ if ( $ cellIterator -> valid () || $ rowStyleExists ) {
161+ if ($ spanRow ) {
162+ $ objWriter -> startElement ( ' table:table-row ' );
163+ $ objWriter ->writeAttribute (
164+ ' table:number-rows-repeated ' ,
165+ ( string ) $ spanRow
166+ );
172167 $ objWriter ->endElement ();
173- $ span_row = 0 ;
174- } else {
175- if ($ sheet ->rowDimensionExists ($ row ->getRowIndex ()) && $ sheet ->getRowDimension ($ row ->getRowIndex ())->getRowHeight () > 0 ) {
176- $ objWriter ->writeAttribute (
177- 'table:style-name ' ,
178- sprintf ('%s_%d_%d ' , Style::ROW_STYLE_PREFIX , $ sheetIndex , $ row ->getRowIndex ())
179- );
180- }
181- $ this ->writeCells ($ objWriter , $ cellIterator );
168+ $ spanRow = 0 ;
169+ }
170+ $ objWriter ->startElement ('table:table-row ' );
171+ if ($ rowStyleExists ) {
172+ $ objWriter ->writeAttribute (
173+ 'table:style-name ' ,
174+ sprintf ('%s_%d_%d ' , Style::ROW_STYLE_PREFIX , $ sheetIndex , $ row ->getRowIndex ())
175+ );
182176 }
177+ $ this ->writeCells ($ objWriter , $ cellIterator );
183178 $ objWriter ->endElement ();
184179 } else {
185- ++$ span_row ;
180+ ++$ spanRow ;
186181 }
187182 }
188183 }
@@ -192,7 +187,6 @@ private function writeRows(XMLWriter $objWriter, Worksheet $sheet, int $sheetInd
192187 */
193188 private function writeCells (XMLWriter $ objWriter , RowCellIterator $ cells ): void
194189 {
195- $ numberColsRepeated = self ::NUMBER_COLS_REPEATED_MAX ;
196190 $ prevColumn = -1 ;
197191 foreach ($ cells as $ cell ) {
198192 /** @var Cell $cell */
@@ -293,17 +287,6 @@ private function writeCells(XMLWriter $objWriter, RowCellIterator $cells): void
293287 $ objWriter ->endElement ();
294288 $ prevColumn = $ column ;
295289 }
296-
297- $ numberColsRepeated = $ numberColsRepeated - $ prevColumn - 1 ;
298- if ($ numberColsRepeated > 0 ) {
299- if ($ numberColsRepeated > 1 ) {
300- $ objWriter ->startElement ('table:table-cell ' );
301- $ objWriter ->writeAttribute ('table:number-columns-repeated ' , (string ) $ numberColsRepeated );
302- $ objWriter ->endElement ();
303- } else {
304- $ objWriter ->writeElement ('table:table-cell ' );
305- }
306- }
307290 }
308291
309292 /**
0 commit comments