Skip to content

Commit 37b41a1

Browse files
committed
Reusing Disconnected Worksheet
Throws exception if you subsequently attempt `createSheet(0)`. Fix that.
1 parent 7cc6e4e commit 37b41a1

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

src/PhpSpreadsheet/Spreadsheet.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,7 @@ public function disconnectWorksheets(): void
510510
unset($worksheet);
511511
}
512512
$this->workSheetCollection = [];
513+
$this->activeSheetIndex = -1;
513514
}
514515

515516
/**
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace PhpOffice\PhpSpreadsheetTests;
6+
7+
use PhpOffice\PhpSpreadsheet\Spreadsheet;
8+
use PHPUnit\Framework\TestCase;
9+
10+
class ReuseDisconnectTest extends TestCase
11+
{
12+
public function testDisconnectThenReuse(): void
13+
{
14+
$spreadsheet = new Spreadsheet();
15+
$spreadsheet->disconnectWorksheets();
16+
self::assertSame(0, $spreadsheet->getSheetCount());
17+
self::assertSame(-1, $spreadsheet->getActiveSheetIndex());
18+
19+
$sheet = $spreadsheet->createSheet(0);
20+
self::assertSame(1, $spreadsheet->getSheetCount());
21+
self::assertSame(0, $spreadsheet->getActiveSheetIndex());
22+
23+
// Confirm calculation engine and style supervisor are instact
24+
$sheet->getCell('A1')->setValue('=1+2');
25+
$sheet->getStyle('A1')->getFont()->setBold(true);
26+
self::assertSame(3, $sheet->getCell('A1')->getCalculatedValue());
27+
self::assertTrue(
28+
$sheet->getStyle('A1')->getFont()->getBold()
29+
);
30+
31+
$spreadsheet->disconnectWorksheets();
32+
}
33+
}

0 commit comments

Comments
 (0)