getActiveSheet(); $sheet->setCellValueExplicit('A1', 'Hello World', DataType::TYPE_STRING); $sheet->setCellValueExplicit('B3', null, DataType::TYPE_NULL); $sheet->setCellValueExplicit('B4', '', DataType::TYPE_STRING); $sheet->setCellValueExplicit('B5', null, DataType::TYPE_NULL); $sheet->setCellValueExplicit('C5', '', DataType::TYPE_STRING); $sheet->setCellValueExplicit('B6', null, DataType::TYPE_NULL); $sheet->setCellValueExplicit('C6', 'PHP', DataType::TYPE_STRING); $sheet->setCellValueExplicit('B7', '', DataType::TYPE_STRING); $sheet->setCellValueExplicit('C7', 'PHP', DataType::TYPE_STRING); $sheet->setCellValueExplicit('B8', null, DataType::TYPE_NULL); $sheet->setCellValueExplicit('C8', '', DataType::TYPE_STRING); $sheet->setCellValueExplicit('D8', 'PHP', DataType::TYPE_STRING); return $sheet; } /** * @dataProvider emptyRowBasic */ public function testIteratorEmptyRow(int $rowId, bool $expectedEmpty): void { $spreadsheet = new Spreadsheet(); $sheet = self::getPopulatedSheet($spreadsheet); $iterator = new RowIterator($sheet, 1, 9); $iterator->seek($rowId); $row = $iterator->current(); $isEmpty = $row->isEmpty(); self::assertSame($expectedEmpty, $isEmpty); $spreadsheet->disconnectWorksheets(); } public function emptyRowBasic(): array { return [ [1, false], [2, true], [3, false], [4, false], [5, false], [6, false], [7, false], [8, false], [9, true], ]; } /** * @dataProvider emptyRowNullAsEmpty */ public function testIteratorEmptyRowWithNull(int $rowId, bool $expectedEmpty): void { $spreadsheet = new Spreadsheet(); $sheet = self::getPopulatedSheet($spreadsheet); $iterator = new RowIterator($sheet, 1, 9); $iterator->seek($rowId); $row = $iterator->current(); $isEmpty = $row->isEmpty(CellIterator::TREAT_NULL_VALUE_AS_EMPTY_CELL); self::assertSame($expectedEmpty, $isEmpty); $spreadsheet->disconnectWorksheets(); } public function emptyRowNullAsEmpty(): array { return [ [1, false], [2, true], [3, true], [4, false], [5, false], [6, false], [7, false], [8, false], [9, true], ]; } /** * @dataProvider emptyRowEmptyStringAsEmpty */ public function testIteratorEmptyRowWithEmptyString(int $rowId, bool $expectedEmpty): void { $spreadsheet = new Spreadsheet(); $sheet = self::getPopulatedSheet($spreadsheet); $iterator = new RowIterator($sheet, 1, 9); $iterator->seek($rowId); $row = $iterator->current(); $isEmpty = $row->isEmpty(CellIterator::TREAT_EMPTY_STRING_AS_EMPTY_CELL); self::assertSame($expectedEmpty, $isEmpty); $spreadsheet->disconnectWorksheets(); } public function emptyRowEmptyStringAsEmpty(): array { return [ [1, false], [2, true], [3, false], [4, true], [5, false], [6, false], [7, false], [8, false], [9, true], ]; } /** * @dataProvider emptyRowNullAndEmptyStringAsEmpty */ public function testIteratorEmptyRowWithNullAndEmptyString(int $rowId, bool $expectedEmpty): void { $spreadsheet = new Spreadsheet(); $sheet = self::getPopulatedSheet($spreadsheet); $iterator = new RowIterator($sheet, 1, 9); $iterator->seek($rowId); $row = $iterator->current(); $isEmpty = $row->isEmpty( CellIterator::TREAT_EMPTY_STRING_AS_EMPTY_CELL | CellIterator::TREAT_NULL_VALUE_AS_EMPTY_CELL ); self::assertSame($expectedEmpty, $isEmpty); $spreadsheet->disconnectWorksheets(); } public function emptyRowNullAndEmptyStringAsEmpty(): array { return [ [1, false], [2, true], [3, true], [4, true], [5, true], [6, false], [7, false], [8, false], [9, true], ]; } }