1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Functional; |
4
|
|
|
|
5
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet; |
6
|
|
|
|
7
|
|
|
class FreezePaneTest extends AbstractFunctional |
8
|
|
|
{ |
9
|
|
|
public function providerFormats() |
10
|
|
|
{ |
11
|
|
|
return [ |
12
|
|
|
['Xls'], |
13
|
|
|
['Xlsx'], |
14
|
|
|
]; |
15
|
|
|
} |
16
|
|
|
|
17
|
|
|
/** |
18
|
|
|
* @dataProvider providerFormats |
19
|
|
|
* |
20
|
|
|
* @param string $format |
21
|
|
|
*/ |
22
|
|
|
public function testFreezePane($format) |
23
|
|
|
{ |
24
|
|
|
$cellSplit = 'B4'; |
25
|
|
|
$topLeftCell = 'E7'; |
26
|
|
|
|
27
|
|
|
$spreadsheet = new Spreadsheet(); |
28
|
|
|
$spreadsheet->getActiveSheet()->freezePane($cellSplit, $topLeftCell); |
29
|
|
|
|
30
|
|
|
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, $format); |
31
|
|
|
|
32
|
|
|
// Read written file |
33
|
|
|
$reloadedActive = $reloadedSpreadsheet->getActiveSheet(); |
34
|
|
|
$actualCellSplit = $reloadedActive->getFreezePane(); |
35
|
|
|
$actualTopLeftCell = $reloadedActive->getTopLeftCell(); |
36
|
|
|
|
37
|
|
|
self::assertSame($cellSplit, $actualCellSplit, 'should be able to set freeze pane'); |
38
|
|
|
self::assertSame($topLeftCell, $actualTopLeftCell, 'should be able to set the top left cell'); |
39
|
|
|
} |
40
|
|
|
|
41
|
|
|
/** |
42
|
|
|
* @dataProvider providerFormats |
43
|
|
|
* |
44
|
|
|
* @param string $format |
45
|
|
|
*/ |
46
|
|
|
public function testFreezePaneWithInvalidSelectedCells($format) |
47
|
|
|
{ |
48
|
|
|
$cellSplit = 'A7'; |
49
|
|
|
$topLeftCell = 'A24'; |
50
|
|
|
|
51
|
|
|
$spreadsheet = new Spreadsheet(); |
52
|
|
|
$worksheet = $spreadsheet->getActiveSheet(); |
53
|
|
|
|
54
|
|
|
$worksheet->freezePane('A7', 'A24'); |
55
|
|
|
$worksheet->setSelectedCells('F5'); |
56
|
|
|
|
57
|
|
|
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, $format); |
58
|
|
|
|
59
|
|
|
// Read written file |
60
|
|
|
$reloadedActive = $reloadedSpreadsheet->getActiveSheet(); |
61
|
|
|
$actualCellSplit = $reloadedActive->getFreezePane(); |
62
|
|
|
$actualTopLeftCell = $reloadedActive->getTopLeftCell(); |
63
|
|
|
|
64
|
|
|
self::assertSame($cellSplit, $actualCellSplit, 'should be able to set freeze pane'); |
65
|
|
|
self::assertSame($topLeftCell, $actualTopLeftCell, 'should be able to set the top left cell'); |
66
|
|
|
self::assertSame('F5', $reloadedActive->getSelectedCells()); |
67
|
|
|
} |
68
|
|
|
|
69
|
|
|
/** |
70
|
|
|
* @dataProvider providerFormats |
71
|
|
|
* |
72
|
|
|
* @param string $format |
73
|
|
|
*/ |
74
|
|
|
public function testFreezePaneUserSelectedCell($format) |
75
|
|
|
{ |
76
|
|
|
$spreadsheet = new Spreadsheet(); |
77
|
|
|
$worksheet = $spreadsheet->getActiveSheet(); |
78
|
|
|
$worksheet->setCellValue('A1', 'Header1'); |
79
|
|
|
$worksheet->setCellValue('B1', 'Header2'); |
80
|
|
|
$worksheet->setCellValue('C1', 'Header3'); |
81
|
|
|
$worksheet->setCellValue('A2', 'Data1'); |
82
|
|
|
$worksheet->setCellValue('B2', 'Data2'); |
83
|
|
|
$worksheet->setCellValue('C2', 'Data3'); |
84
|
|
|
$worksheet->setCellValue('A3', 'Data4'); |
85
|
|
|
$worksheet->setCellValue('B3', 'Data5'); |
86
|
|
|
$worksheet->setCellValue('C3', 'Data6'); |
87
|
|
|
$worksheet->freezePane('A2'); |
88
|
|
|
$worksheet->setSelectedCells('C3'); |
89
|
|
|
|
90
|
|
|
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, $format); |
91
|
|
|
// Read written file |
92
|
|
|
$reloadedActive = $reloadedSpreadsheet->getActiveSheet(); |
93
|
|
|
|
94
|
|
|
$expected = 'C3'; |
95
|
|
|
self::assertSame($expected, $reloadedActive->getSelectedCells()); |
96
|
|
|
} |
97
|
|
|
|
98
|
|
|
/** |
99
|
|
|
* @dataProvider providerFormats |
100
|
|
|
* |
101
|
|
|
* @param string $format |
102
|
|
|
*/ |
103
|
|
|
public function testNoFreezePaneUserSelectedCell($format) |
104
|
|
|
{ |
105
|
|
|
$spreadsheet = new Spreadsheet(); |
106
|
|
|
$worksheet = $spreadsheet->getActiveSheet(); |
107
|
|
|
$worksheet->setCellValue('A1', 'Header1'); |
108
|
|
|
$worksheet->setCellValue('B1', 'Header2'); |
109
|
|
|
$worksheet->setCellValue('C1', 'Header3'); |
110
|
|
|
$worksheet->setCellValue('A2', 'Data1'); |
111
|
|
|
$worksheet->setCellValue('B2', 'Data2'); |
112
|
|
|
$worksheet->setCellValue('C2', 'Data3'); |
113
|
|
|
$worksheet->setCellValue('A3', 'Data4'); |
114
|
|
|
$worksheet->setCellValue('B3', 'Data5'); |
115
|
|
|
$worksheet->setCellValue('C3', 'Data6'); |
116
|
|
|
//$worksheet->freezePane('A2'); |
117
|
|
|
$worksheet->setSelectedCells('C3'); |
118
|
|
|
|
119
|
|
|
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, $format); |
120
|
|
|
// Read written file |
121
|
|
|
$reloadedActive = $reloadedSpreadsheet->getActiveSheet(); |
122
|
|
|
|
123
|
|
|
$expected = 'C3'; |
124
|
|
|
self::assertSame($expected, $reloadedActive->getSelectedCells()); |
125
|
|
|
} |
126
|
|
|
} |
127
|
|
|
|