See Release Notes
Long Term Support Release
<?php namespace PhpOffice\PhpSpreadsheet\Worksheet;< use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException;> use Iterator as NativeIterator; > use PhpOffice\PhpSpreadsheet\Cell\Cell; > use PhpOffice\PhpSpreadsheet\Collection\Cells;< abstract class CellIterator implements \Iterator> /** > * @template TKey > * > * @implements NativeIterator<TKey, Cell> > */ > abstract class CellIterator implements NativeIterator{> public const TREAT_NULL_VALUE_AS_EMPTY_CELL = 1; /** > * Worksheet to iterate. > public const TREAT_EMPTY_STRING_AS_EMPTY_CELL = 2; * > * @var Worksheet > public const IF_NOT_EXISTS_RETURN_NULL = false; */ > protected $worksheet; > public const IF_NOT_EXISTS_CREATE_NEW = true; >/**> * Cell Collection to iterate. * Iterate only existing cells. > * * > * @var Cells * @var bool > */ */ > protected $cellCollection; protected $onlyExistingCells = false; > > /**/**> * If iterating all cells, and a cell doesn't exist, identifies whether a new cell should be created, * Destructor. > * or if the iterator should return a null value. */ > * public function __destruct() > * @var bool { > */ unset($this->worksheet); > protected $ifNotExists = self::IF_NOT_EXISTS_CREATE_NEW; } > > /**< unset($this->worksheet);> // @phpstan-ignore-next-line > $this->worksheet = $this->cellCollection = null; > } > > public function getIfNotExists(): bool > { > return $this->ifNotExists; > } > > public function setIfNotExists(bool $ifNotExists = self::IF_NOT_EXISTS_CREATE_NEW): void > { > $this->ifNotExists = $ifNotExists;* Get loop only existing cells.< * < * @return bool*/< public function getIterateOnlyExistingCells()> public function getIterateOnlyExistingCells(): bool{ return $this->onlyExistingCells; } /**< * Validate start/end values for "IterateOnlyExistingCells" mode, and adjust if necessary. < * < * @throws PhpSpreadsheetException> * Validate start/end values for 'IterateOnlyExistingCells' mode, and adjust if necessary.*/< abstract protected function adjustForExistingOnlyRange();> abstract protected function adjustForExistingOnlyRange(): void;/** * Set the iterator to loop only existing cells.< * < * @param bool $value < * < * @throws PhpSpreadsheetException*/< public function setIterateOnlyExistingCells($value)> public function setIterateOnlyExistingCells(bool $value): void{ $this->onlyExistingCells = (bool) $value; $this->adjustForExistingOnlyRange(); } }