diff --git a/src/PhpSpreadsheet/Spreadsheet.php b/src/PhpSpreadsheet/Spreadsheet.php index 4c7417a55c..3fe6d044c1 100644 --- a/src/PhpSpreadsheet/Spreadsheet.php +++ b/src/PhpSpreadsheet/Spreadsheet.php @@ -510,6 +510,7 @@ public function disconnectWorksheets(): void unset($worksheet); } $this->workSheetCollection = []; + $this->activeSheetIndex = -1; } /** diff --git a/tests/PhpSpreadsheetTests/ReuseDisconnectTest.php b/tests/PhpSpreadsheetTests/ReuseDisconnectTest.php new file mode 100644 index 0000000000..86ee8c0519 --- /dev/null +++ b/tests/PhpSpreadsheetTests/ReuseDisconnectTest.php @@ -0,0 +1,33 @@ +disconnectWorksheets(); + self::assertSame(0, $spreadsheet->getSheetCount()); + self::assertSame(-1, $spreadsheet->getActiveSheetIndex()); + + $sheet = $spreadsheet->createSheet(0); + self::assertSame(1, $spreadsheet->getSheetCount()); + self::assertSame(0, $spreadsheet->getActiveSheetIndex()); + + // Confirm calculation engine and style supervisor are instact + $sheet->getCell('A1')->setValue('=1+2'); + $sheet->getStyle('A1')->getFont()->setBold(true); + self::assertSame(3, $sheet->getCell('A1')->getCalculatedValue()); + self::assertTrue( + $sheet->getStyle('A1')->getFont()->getBold() + ); + + $spreadsheet->disconnectWorksheets(); + } +}