Skip to content

Commit 56509d9

Browse files
authored
Merge pull request #2808 from PHPOffice/Performance-Ods-Writer
Performance Ods/Html Writers
2 parents ea165dc + d4f6e78 commit 56509d9

File tree

2 files changed

+11
-17
lines changed

2 files changed

+11
-17
lines changed

src/PhpSpreadsheet/Writer/Html.php

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -477,12 +477,8 @@ public function generateSheetData()
477477
$column = $minCol;
478478
while ($column <= $maxCol) {
479479
// Cell exists?
480-
if ($sheet->cellExistsByColumnAndRow($column, $row)) {
481-
$rowData[$column] = Coordinate::stringFromColumnIndex($column) . $row;
482-
} else {
483-
$rowData[$column] = '';
484-
}
485-
++$column;
480+
$cellAddress = Coordinate::stringFromColumnIndex($column) . $row;
481+
$rowData[$column++] = ($sheet->getCellCollection()->has($cellAddress)) ? $cellAddress : '';
486482
}
487483
$html .= $this->generateRow($sheet, $rowData, $row - 1, $cellType);
488484
}
@@ -1232,7 +1228,7 @@ private function generateRowStart(Worksheet $worksheet, $sheetIndex, $row)
12321228

12331229
private function generateRowCellCss(Worksheet $worksheet, $cellAddress, $row, $columnNumber)
12341230
{
1235-
$cell = ($cellAddress > '') ? $worksheet->getCell($cellAddress) : '';
1231+
$cell = ($cellAddress > '') ? $worksheet->getCellCollection()->get($cellAddress) : '';
12361232
$coordinate = Coordinate::stringFromColumnIndex($columnNumber + 1) . ($row + 1);
12371233
if (!$this->useInlineCss) {
12381234
$cssClass = 'column' . $columnNumber;

src/PhpSpreadsheet/Writer/Ods/Content.php

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use PhpOffice\PhpSpreadsheet\Shared\XMLWriter;
99
use PhpOffice\PhpSpreadsheet\Spreadsheet;
1010
use PhpOffice\PhpSpreadsheet\Worksheet\Row;
11+
use PhpOffice\PhpSpreadsheet\Worksheet\RowCellIterator;
1112
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
1213
use PhpOffice\PhpSpreadsheet\Writer\Exception;
1314
use 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

Comments
 (0)