1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Style; |
4
|
|
|
|
5
|
|
|
use PhpOffice\PhpSpreadsheet\Cell\CellAddress; |
6
|
|
|
use PhpOffice\PhpSpreadsheet\Cell\CellRange; |
7
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet; |
8
|
|
|
use PhpOffice\PhpSpreadsheet\Style\Fill; |
9
|
|
|
use PhpOffice\PhpSpreadsheet\Style\NumberFormat; |
10
|
|
|
use PHPUnit\Framework\TestCase; |
11
|
|
|
|
12
|
|
|
class StyleTest extends TestCase |
13
|
|
|
{ |
14
|
|
|
public function testStyleOddMethods(): void |
15
|
|
|
{ |
16
|
|
|
$spreadsheet = new Spreadsheet(); |
17
|
|
|
$sheet = $spreadsheet->getActiveSheet(); |
18
|
|
|
$cellCoordinate = 'A1'; |
19
|
|
|
$cell1 = $sheet->getCell($cellCoordinate); |
20
|
|
|
$cell1style = $cell1->getStyle(); |
21
|
|
|
self::assertSame($spreadsheet, $cell1style->getParent()); |
22
|
|
|
$styleArray = ['alignment' => ['textRotation' => 45]]; |
23
|
|
|
$outArray = $cell1style->getStyleArray($styleArray); |
24
|
|
|
self::assertEquals($styleArray, $outArray['quotePrefix']); |
25
|
|
|
} |
26
|
|
|
|
27
|
|
|
public function testStyleColumn(): void |
28
|
|
|
{ |
29
|
|
|
$spreadsheet = new Spreadsheet(); |
30
|
|
|
$sheet = $spreadsheet->getActiveSheet(); |
31
|
|
|
$cellCoordinates = 'A:B'; |
32
|
|
|
$styleArray = [ |
33
|
|
|
'font' => [ |
34
|
|
|
'bold' => true, |
35
|
|
|
], |
36
|
|
|
]; |
37
|
|
|
$sheet->getStyle($cellCoordinates)->applyFromArray($styleArray); |
38
|
|
|
$sheet->setCellValue('A1', 'xxxa1'); |
39
|
|
|
$sheet->setCellValue('A2', 'xxxa2'); |
40
|
|
|
$sheet->setCellValue('A3', 'xxxa3'); |
41
|
|
|
$sheet->setCellValue('B1', 'xxxa1'); |
42
|
|
|
$sheet->setCellValue('B2', 'xxxa2'); |
43
|
|
|
$sheet->setCellValue('B3', 'xxxa3'); |
44
|
|
|
$sheet->setCellValue('C1', 'xxxc1'); |
45
|
|
|
$sheet->setCellValue('C2', 'xxxc2'); |
46
|
|
|
$sheet->setCellValue('C3', 'xxxc3'); |
47
|
|
|
$styleArray = [ |
48
|
|
|
'font' => [ |
49
|
|
|
'italic' => true, |
50
|
|
|
], |
51
|
|
|
]; |
52
|
|
|
$sheet->getStyle($cellCoordinates)->applyFromArray($styleArray); |
53
|
|
|
self::assertTrue($sheet->getStyle('A1')->getFont()->getBold()); |
54
|
|
|
self::assertTrue($sheet->getStyle('B2')->getFont()->getBold()); |
55
|
|
|
self::assertFalse($sheet->getStyle('C3')->getFont()->getBold()); |
56
|
|
|
self::assertTrue($sheet->getStyle('A1')->getFont()->getItalic()); |
57
|
|
|
self::assertTrue($sheet->getStyle('B2')->getFont()->getItalic()); |
58
|
|
|
self::assertFalse($sheet->getStyle('C3')->getFont()->getItalic()); |
59
|
|
|
} |
60
|
|
|
|
61
|
|
|
public function testStyleIsReused(): void |
62
|
|
|
{ |
63
|
|
|
$spreadsheet = new Spreadsheet(); |
64
|
|
|
$sheet = $spreadsheet->getActiveSheet(); |
65
|
|
|
$styleArray = [ |
66
|
|
|
'font' => [ |
67
|
|
|
'italic' => true, |
68
|
|
|
], |
69
|
|
|
]; |
70
|
|
|
|
71
|
|
|
$sheet->getStyle('A1')->getFont()->setBold(true); |
72
|
|
|
$sheet->getStyle('A2')->getFont()->setBold(true); |
73
|
|
|
$sheet->getStyle('A3')->getFont()->setBold(true); |
74
|
|
|
$sheet->getStyle('A3')->getFont()->setItalic(true); |
75
|
|
|
|
76
|
|
|
$sheet->getStyle('A')->applyFromArray($styleArray); |
77
|
|
|
|
78
|
|
|
self::assertCount(4, $spreadsheet->getCellXfCollection()); |
79
|
|
|
$spreadsheet->garbageCollect(); |
80
|
|
|
|
81
|
|
|
self::assertCount(3, $spreadsheet->getCellXfCollection()); |
82
|
|
|
} |
83
|
|
|
|
84
|
|
|
public function testStyleRow(): void |
85
|
|
|
{ |
86
|
|
|
$spreadsheet = new Spreadsheet(); |
87
|
|
|
$sheet = $spreadsheet->getActiveSheet(); |
88
|
|
|
$cellCoordinates = '2:3'; |
89
|
|
|
$styleArray = [ |
90
|
|
|
'font' => [ |
91
|
|
|
'bold' => true, |
92
|
|
|
], |
93
|
|
|
]; |
94
|
|
|
$sheet->getStyle($cellCoordinates)->applyFromArray($styleArray); |
95
|
|
|
$sheet->setCellValue('A1', 'xxxa1'); |
96
|
|
|
$sheet->setCellValue('A2', 'xxxa2'); |
97
|
|
|
$sheet->setCellValue('A3', 'xxxa3'); |
98
|
|
|
$sheet->setCellValue('B1', 'xxxa1'); |
99
|
|
|
$sheet->setCellValue('B2', 'xxxa2'); |
100
|
|
|
$sheet->setCellValue('B3', 'xxxa3'); |
101
|
|
|
$sheet->setCellValue('C1', 'xxxc1'); |
102
|
|
|
$sheet->setCellValue('C2', 'xxxc2'); |
103
|
|
|
$sheet->setCellValue('C3', 'xxxc3'); |
104
|
|
|
$styleArray = [ |
105
|
|
|
'font' => [ |
106
|
|
|
'italic' => true, |
107
|
|
|
], |
108
|
|
|
]; |
109
|
|
|
$sheet->getStyle($cellCoordinates)->applyFromArray($styleArray); |
110
|
|
|
self::assertFalse($sheet->getStyle('A1')->getFont()->getBold()); |
111
|
|
|
self::assertTrue($sheet->getStyle('B2')->getFont()->getBold()); |
112
|
|
|
self::assertTrue($sheet->getStyle('C3')->getFont()->getBold()); |
113
|
|
|
self::assertFalse($sheet->getStyle('A1')->getFont()->getItalic()); |
114
|
|
|
self::assertTrue($sheet->getStyle('B2')->getFont()->getItalic()); |
115
|
|
|
self::assertTrue($sheet->getStyle('C3')->getFont()->getItalic()); |
116
|
|
|
} |
117
|
|
|
|
118
|
|
|
public function testIssue1712A(): void |
119
|
|
|
{ |
120
|
|
|
$spreadsheet = new Spreadsheet(); |
121
|
|
|
$sheet = $spreadsheet->getActiveSheet(); |
122
|
|
|
$rgb = '4467b8'; |
123
|
|
|
$sheet->fromArray(['OK', 'KO']); |
124
|
|
|
$spreadsheet->getActiveSheet() |
125
|
|
|
->getStyle('A1') |
126
|
|
|
->getFill() |
127
|
|
|
->setFillType(Fill::FILL_SOLID) |
128
|
|
|
->getStartColor() |
129
|
|
|
->setRGB($rgb); |
130
|
|
|
$spreadsheet->getActiveSheet() |
131
|
|
|
->getStyle('B') |
132
|
|
|
->getFill() |
133
|
|
|
->setFillType(Fill::FILL_SOLID) |
134
|
|
|
->getStartColor() |
135
|
|
|
->setRGB($rgb); |
136
|
|
|
self::assertEquals($rgb, $sheet->getCell('A1')->getStyle()->getFill()->getStartColor()->getRGB()); |
137
|
|
|
self::assertEquals($rgb, $sheet->getCell('B1')->getStyle()->getFill()->getStartColor()->getRGB()); |
138
|
|
|
} |
139
|
|
|
|
140
|
|
|
public function testIssue1712B(): void |
141
|
|
|
{ |
142
|
|
|
$spreadsheet = new Spreadsheet(); |
143
|
|
|
$sheet = $spreadsheet->getActiveSheet(); |
144
|
|
|
$rgb = '4467b8'; |
145
|
|
|
$spreadsheet->getActiveSheet() |
146
|
|
|
->getStyle('A1') |
147
|
|
|
->getFill() |
148
|
|
|
->setFillType(Fill::FILL_SOLID) |
149
|
|
|
->getStartColor() |
150
|
|
|
->setRGB($rgb); |
151
|
|
|
$spreadsheet->getActiveSheet() |
152
|
|
|
->getStyle('B') |
153
|
|
|
->getFill() |
154
|
|
|
->setFillType(Fill::FILL_SOLID) |
155
|
|
|
->getStartColor() |
156
|
|
|
->setRGB($rgb); |
157
|
|
|
$sheet->fromArray(['OK', 'KO']); |
158
|
|
|
self::assertEquals($rgb, $sheet->getCell('A1')->getStyle()->getFill()->getStartColor()->getRGB()); |
159
|
|
|
self::assertEquals($rgb, $sheet->getCell('B1')->getStyle()->getFill()->getStartColor()->getRGB()); |
160
|
|
|
} |
161
|
|
|
|
162
|
|
|
public function testStyleLoopUpwards(): void |
163
|
|
|
{ |
164
|
|
|
$spreadsheet = new Spreadsheet(); |
165
|
|
|
$sheet = $spreadsheet->getActiveSheet(); |
166
|
|
|
$cellCoordinates = 'C5:A3'; |
167
|
|
|
$styleArray = [ |
168
|
|
|
'font' => [ |
169
|
|
|
'bold' => true, |
170
|
|
|
], |
171
|
|
|
]; |
172
|
|
|
$sheet->getStyle($cellCoordinates)->applyFromArray($styleArray); |
173
|
|
|
$sheet->setCellValue('A1', 'xxxa1'); |
174
|
|
|
$sheet->setCellValue('A2', 'xxxa2'); |
175
|
|
|
$sheet->setCellValue('A3', 'xxxa3'); |
176
|
|
|
$sheet->setCellValue('B1', 'xxxa1'); |
177
|
|
|
$sheet->setCellValue('B2', 'xxxa2'); |
178
|
|
|
$sheet->setCellValue('B3', 'xxxa3'); |
179
|
|
|
$sheet->setCellValue('C1', 'xxxc1'); |
180
|
|
|
$sheet->setCellValue('C2', 'xxxc2'); |
181
|
|
|
$sheet->setCellValue('C3', 'xxxc3'); |
182
|
|
|
self::assertFalse($sheet->getStyle('A1')->getFont()->getBold()); |
183
|
|
|
self::assertFalse($sheet->getStyle('B2')->getFont()->getBold()); |
184
|
|
|
self::assertTrue($sheet->getStyle('C3')->getFont()->getBold()); |
185
|
|
|
} |
186
|
|
|
|
187
|
|
|
public function testStyleCellAddressObject(): void |
188
|
|
|
{ |
189
|
|
|
$spreadsheet = new Spreadsheet(); |
190
|
|
|
$worksheet = $spreadsheet->getActiveSheet(); |
191
|
|
|
$cellAddress = new CellAddress('A1', $worksheet); |
192
|
|
|
$style = $worksheet->getStyle($cellAddress); |
193
|
|
|
$style->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_DATE_YYYYMMDDSLASH); |
194
|
|
|
|
195
|
|
|
self::assertSame(NumberFormat::FORMAT_DATE_YYYYMMDDSLASH, $style->getNumberFormat()->getFormatCode()); |
196
|
|
|
} |
197
|
|
|
|
198
|
|
|
public function testStyleCellRangeObject(): void |
199
|
|
|
{ |
200
|
|
|
$spreadsheet = new Spreadsheet(); |
201
|
|
|
$worksheet = $spreadsheet->getActiveSheet(); |
202
|
|
|
$cellAddress1 = new CellAddress('A1', $worksheet); |
203
|
|
|
$cellAddress2 = new CellAddress('B2', $worksheet); |
204
|
|
|
$cellRange = new CellRange($cellAddress1, $cellAddress2); |
205
|
|
|
$style = $worksheet->getStyle($cellRange); |
206
|
|
|
$style->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_DATE_YYYYMMDDSLASH); |
207
|
|
|
|
208
|
|
|
self::assertSame(NumberFormat::FORMAT_DATE_YYYYMMDDSLASH, $style->getNumberFormat()->getFormatCode()); |
209
|
|
|
} |
210
|
|
|
} |
211
|
|
|
|