Skip to content

Commit 6153b30

Browse files
committed
More Robust Test
1 parent ee1d4d0 commit 6153b30

File tree

4 files changed

+57
-58
lines changed

4 files changed

+57
-58
lines changed

src/PhpSpreadsheet/Worksheet/Worksheet.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -683,6 +683,8 @@ public function calculateWorksheetDataDimension(): string
683683
*/
684684
public function calculateColumnWidths(): static
685685
{
686+
$activeSheet = $this->getParent()?->getActiveSheetIndex();
687+
$selectedCells = $this->selectedCells;
686688
// initialize $autoSizes array
687689
$autoSizes = [];
688690
foreach ($this->getColumnDimensions() as $colDimension) {
@@ -780,6 +782,10 @@ public function calculateColumnWidths(): static
780782
}
781783
$this->activePane = $holdActivePane;
782784
}
785+
if ($activeSheet !== null && $activeSheet >= 0) {
786+
$this->getParent()?->setActiveSheetIndex($activeSheet);
787+
}
788+
$this->selectedCells = $selectedCells;
783789

784790
return $this;
785791
}

src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -456,8 +456,6 @@ private function writeCols(XMLWriter $objWriter, PhpspreadsheetWorksheet $worksh
456456
{
457457
// cols
458458
if (count($worksheet->getColumnDimensions()) > 0) {
459-
$activeSheet = $worksheet->getParent()?->getActiveSheetIndex();
460-
$selectedCells = $worksheet->getSelectedCells();
461459
$objWriter->startElement('cols');
462460

463461
$worksheet->calculateColumnWidths();
@@ -509,10 +507,6 @@ private function writeCols(XMLWriter $objWriter, PhpspreadsheetWorksheet $worksh
509507
}
510508

511509
$objWriter->endElement();
512-
if ($activeSheet !== null && $activeSheet >= 0) {
513-
$worksheet->getParent()?->setActiveSheetIndex($activeSheet);
514-
}
515-
$worksheet->setSelectedCells($selectedCells);
516510
}
517511
}
518512

tests/PhpSpreadsheetTests/Writer/RetainSelectedCellsTest.php

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,23 @@
44

55
namespace PhpOffice\PhpSpreadsheetTests\Writer;
66

7+
use PhpOffice\PhpSpreadsheet\IOFactory;
8+
use PhpOffice\PhpSpreadsheet\Shared\File;
79
use PhpOffice\PhpSpreadsheet\Spreadsheet;
810
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
911

1012
class RetainSelectedCellsTest extends AbstractFunctional
1113
{
14+
private string $fileName = '';
15+
16+
protected function tearDown(): void
17+
{
18+
if ($this->fileName !== '') {
19+
unlink($this->fileName);
20+
$this->fileName = '';
21+
}
22+
}
23+
1224
public static function providerFormats(): array
1325
{
1426
return [
@@ -76,4 +88,43 @@ public function testRetainSelectedCells(string $format): void
7688
self::assertEquals(1, $reloaded->getActiveSheetIndex());
7789
}
7890
}
91+
92+
/** @dataProvider providerFormats */
93+
public function testRetainAutoSize(string $type): void
94+
{
95+
$spreadsheet = new Spreadsheet();
96+
$sheet1 = $spreadsheet->getActiveSheet();
97+
$array = [
98+
[1, 2, 3, 4, 5],
99+
[11, 12, 13, 14, 15],
100+
[21, 22, 23, 24, 25],
101+
[31, 32, 33, 34, 35],
102+
];
103+
$sheet1->fromArray($array);
104+
$sheet2 = $spreadsheet->createSheet();
105+
$sheet2->fromArray($array);
106+
$sheet3 = $spreadsheet->createSheet();
107+
$sheet3->fromArray($array);
108+
$sheet1->getStyle('A1')->getFont()->setName('Arial');
109+
$sheet2->getStyle('A1')->getFont()->setName('Arial');
110+
$sheet3->getStyle('A1')->getFont()->setName('Arial');
111+
$sheet1->getColumnDimension('A')->setAutoSize(true);
112+
$sheet2->getColumnDimension('A')->setAutoSize(true);
113+
$sheet3->getColumnDimension('A')->setAutoSize(true);
114+
$sheet1->setSelectedCells('B2');
115+
$sheet2->setSelectedCells('C3');
116+
$sheet3->setSelectedCells('D4');
117+
$spreadsheet->setActiveSheetIndex(1);
118+
119+
$this->fileName = File::temporaryFilename();
120+
$writer = IOFactory::createWriter($spreadsheet, $type);
121+
$writer->save($this->fileName);
122+
123+
self::assertSame(1, $spreadsheet->getActiveSheetIndex());
124+
self::assertSame('B2', $spreadsheet->getSheet(0)->getSelectedCells());
125+
self::assertSame('C3', $spreadsheet->getSheet(1)->getSelectedCells());
126+
self::assertSame('D4', $spreadsheet->getSheet(2)->getSelectedCells());
127+
128+
$spreadsheet->disconnectWorksheets();
129+
}
79130
}

tests/PhpSpreadsheetTests/Writer/Xlsx/RetainActiveSheetAndCellsTest.php

Lines changed: 0 additions & 52 deletions
This file was deleted.

0 commit comments

Comments
 (0)