diff --git a/src/PhpSpreadsheet/Writer/Html.php b/src/PhpSpreadsheet/Writer/Html.php
index 629e3c0c..555f4dc7 100644
--- a/src/PhpSpreadsheet/Writer/Html.php
+++ b/src/PhpSpreadsheet/Writer/Html.php
@@ -477,12 +477,8 @@ class Html extends BaseWriter
$column = $minCol;
while ($column <= $maxCol) {
// Cell exists?
- if ($sheet->cellExistsByColumnAndRow($column, $row)) {
- $rowData[$column] = Coordinate::stringFromColumnIndex($column) . $row;
- } else {
- $rowData[$column] = '';
- }
- ++$column;
+ $cellAddress = Coordinate::stringFromColumnIndex($column) . $row;
+ $rowData[$column++] = ($sheet->getCellCollection()->has($cellAddress)) ? $cellAddress : '';
}
$html .= $this->generateRow($sheet, $rowData, $row - 1, $cellType);
}
@@ -1232,7 +1228,7 @@ class Html extends BaseWriter
private function generateRowCellCss(Worksheet $worksheet, $cellAddress, $row, $columnNumber)
{
- $cell = ($cellAddress > '') ? $worksheet->getCell($cellAddress) : '';
+ $cell = ($cellAddress > '') ? $worksheet->getCellCollection()->get($cellAddress) : '';
$coordinate = Coordinate::stringFromColumnIndex($columnNumber + 1) . ($row + 1);
if (!$this->useInlineCss) {
$cssClass = 'column' . $columnNumber;
diff --git a/src/PhpSpreadsheet/Writer/Ods/Content.php b/src/PhpSpreadsheet/Writer/Ods/Content.php
index 5d227c84..7e02fc51 100644
--- a/src/PhpSpreadsheet/Writer/Ods/Content.php
+++ b/src/PhpSpreadsheet/Writer/Ods/Content.php
@@ -8,6 +8,7 @@ use PhpOffice\PhpSpreadsheet\Cell\DataType;
use PhpOffice\PhpSpreadsheet\Shared\XMLWriter;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Worksheet\Row;
+use PhpOffice\PhpSpreadsheet\Worksheet\RowCellIterator;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
use PhpOffice\PhpSpreadsheet\Writer\Exception;
use PhpOffice\PhpSpreadsheet\Writer\Ods;
@@ -146,10 +147,10 @@ class Content extends WriterPart
$numberRowsRepeated = self::NUMBER_ROWS_REPEATED_MAX;
$span_row = 0;
$rows = $sheet->getRowIterator();
- while ($rows->valid()) {
+ foreach ($rows as $row) {
+ $cellIterator = $row->getCellIterator();
--$numberRowsRepeated;
- $row = $rows->current();
- if ($row->getCellIterator()->valid()) {
+ if ($cellIterator->valid()) {
if ($span_row) {
$objWriter->startElement('table:table-row');
if ($span_row > 1) {
@@ -168,26 +169,23 @@ class Content extends WriterPart
$span_row = 0;
}
$objWriter->startElement('table:table-row');
- $this->writeCells($objWriter, $row);
+ $this->writeCells($objWriter, $cellIterator);
$objWriter->endElement();
} else {
++$span_row;
}
- $rows->next();
}
}
/**
* Write cells of the specified row.
*/
- private function writeCells(XMLWriter $objWriter, Row $row): void
+ private function writeCells(XMLWriter $objWriter, RowCellIterator $cells): void
{
$numberColsRepeated = self::NUMBER_COLS_REPEATED_MAX;
$prevColumn = -1;
- $cells = $row->getCellIterator();
- while ($cells->valid()) {
+ foreach ($cells as $cell) {
/** @var \PhpOffice\PhpSpreadsheet\Cell\Cell $cell */
- $cell = $cells->current();
$column = Coordinate::columnIndexFromString($cell->getColumn()) - 1;
$this->writeCellSpan($objWriter, $column, $prevColumn);
@@ -250,8 +248,8 @@ class Content extends WriterPart
Comment::write($objWriter, $cell);
$objWriter->endElement();
$prevColumn = $column;
- $cells->next();
}
+
$numberColsRepeated = $numberColsRepeated - $prevColumn - 1;
if ($numberColsRepeated > 0) {
if ($numberColsRepeated > 1) {