1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
declare(strict_types=1); |
4
|
|
|
|
5
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Writer\Html; |
6
|
|
|
|
7
|
|
|
use PhpOffice\PhpSpreadsheet\Reader\Xlsx as XlsxReader; |
8
|
|
|
use PhpOffice\PhpSpreadsheet\Writer\Html as HtmlWriter; |
9
|
|
|
use PHPUnit\Framework\TestCase; |
10
|
|
|
|
11
|
|
|
class HtmlConditionalFormattingTest extends TestCase |
12
|
|
|
{ |
13
|
|
|
private string $data = ''; |
14
|
|
|
|
15
|
|
|
protected function setUp(): void |
16
|
|
|
{ |
17
|
|
|
$file = 'tests/data/Writer/Html/HtmlConditionalFormattingTest.xlsx'; |
18
|
|
|
$reader = new XlsxReader(); |
19
|
|
|
$spreadsheet = $reader->load($file); |
20
|
|
|
$writer = new HtmlWriter($spreadsheet); |
21
|
|
|
$writer->setConditionalFormatting(true); |
22
|
|
|
$this->data = $writer->generateHtmlAll(); |
23
|
|
|
$spreadsheet->disconnectWorksheets(); |
24
|
|
|
} |
25
|
|
|
|
26
|
|
|
#[\PHPUnit\Framework\Attributes\DataProvider('conditionalFormattingProvider')] |
27
|
|
|
public function testConditionalFormattingHtmlOutput(int $rowNumber, array $expectedMatches): void |
28
|
|
|
{ |
29
|
|
|
self::assertSame(1, preg_match('~<tr class="row' . $rowNumber . '".+?</tr>~ms', $this->data, $matches)); |
30
|
|
|
foreach ($expectedMatches as $i => $expected) { |
31
|
|
|
self::assertStringContainsString($expected, $matches[0]); |
32
|
|
|
} |
33
|
|
|
} |
34
|
|
|
|
35
|
|
|
public static function conditionalFormattingProvider(): array |
36
|
|
|
{ |
37
|
|
|
return [ |
38
|
|
|
'row 0' => [0, ['<td class="column1 style1 s">Jan</td>', |
39
|
|
|
'<td class="column2 style1 s">Feb</td>', |
40
|
|
|
'<td class="column3 style1 s">Mar</td>', |
41
|
|
|
'<td class="column4 style1 s">Apr</td>', |
42
|
|
|
'<td class="column5 style1 s">May</td>', |
43
|
|
|
'<td class="column6 style1 s">Jun</td>', |
44
|
|
|
'<td class="column7 style1 s">Jul</td>', |
45
|
|
|
'<td class="column8 style1 s">Aug</td>', |
46
|
|
|
'<td class="column9 style1 s">Sep</td>', |
47
|
|
|
'<td class="column10 style1 s">Oct</td>', |
48
|
|
|
'<td class="column11 style1 s">Nov</td>', |
49
|
|
|
'<td class="column12 style1 s">Dec</td>']], |
50
|
|
|
'row 1' => [1, ['<td class="column0 style1 s">Line A</td>', |
51
|
|
|
'<td class="column1 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">110</td>', |
52
|
|
|
'<td class="column2 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">110</td>', |
53
|
|
|
'<td class="column3 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">110</td>', |
54
|
|
|
'<td class="column4 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">110</td>', |
55
|
|
|
'<td class="column5 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">120</td>', |
56
|
|
|
'<td class="column6 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">110</td>', |
57
|
|
|
'<td class="column7 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#9C5700;font-family:\'Arial\';font-size:11pt;background-color:#FFEB9C;">90</td>', |
58
|
|
|
'<td class="column8 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">110</td>', |
59
|
|
|
'<td class="column9 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">110</td>', |
60
|
|
|
'<td class="column10 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">110</td>', |
61
|
|
|
'<td class="column11 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">110</td>', |
62
|
|
|
'<td class="column12 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">110</td>']], |
63
|
|
|
'row 2' => [2, ['<td class="column0 style1 s">Line B</td>', |
64
|
|
|
'<td class="column1 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">70</td>', |
65
|
|
|
'<td class="column2 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">80</td>', |
66
|
|
|
'<td class="column3 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">70</td>', |
67
|
|
|
'<td class="column4 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">70</td>', |
68
|
|
|
'<td class="column5 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">70</td>', |
69
|
|
|
'<td class="column6 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">70</td>', |
70
|
|
|
'<td class="column7 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#9C5700;font-family:\'Arial\';font-size:11pt;background-color:#FFEB9C;">60</td>', |
71
|
|
|
'<td class="column8 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">70</td>', |
72
|
|
|
'<td class="column9 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">70</td>', |
73
|
|
|
'<td class="column10 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">70</td>', |
74
|
|
|
'<td class="column11 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">70</td>', |
75
|
|
|
'<td class="column12 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">70</td>']], |
76
|
|
|
'row 3' => [3, ['<td class="column0 style1 s">Line C</td>', |
77
|
|
|
'<td class="column1 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">1</td>', |
78
|
|
|
'<td class="column2 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">1</td>', |
79
|
|
|
'<td class="column3 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">1</td>', |
80
|
|
|
'<td class="column4 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">1</td>', |
81
|
|
|
'<td class="column5 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">1</td>', |
82
|
|
|
'<td class="column6 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">1</td>', |
83
|
|
|
'<td class="column7 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">1</td>', |
84
|
|
|
'<td class="column8 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">1</td>', |
85
|
|
|
'<td class="column9 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">1</td>', |
86
|
|
|
'<td class="column10 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">1</td>', |
87
|
|
|
'<td class="column11 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#9C0006;font-family:\'Arial\';font-size:11pt;background-color:#FFC7CE;">5</td>', |
88
|
|
|
'<td class="column12 style1 n" style="vertical-align:bottom;border-bottom:1px solid #000000 !important;border-top:1px solid #000000 !important;border-left:1px solid #000000 !important;border-right:1px solid #000000 !important;color:#006100;font-family:\'Arial\';font-size:11pt;background-color:#C6EFCE;">1</td>']], |
89
|
|
|
'row 4' => [4, ['<td class="column0 style1 s">Line D</td>', |
90
|
|
|
'<td class="column1 style1 n">1</td>', |
91
|
|
|
'<td class="column2 style1 n">1</td>', |
92
|
|
|
'<td class="column3 style1 n">1</td>', |
93
|
|
|
'<td class="column4 style1 n">1</td>', |
94
|
|
|
'<td class="column5 style1 n">0</td>', |
95
|
|
|
'<td class="column6 style1 n">1</td>', |
96
|
|
|
'<td class="column7 style1 n">1</td>', |
97
|
|
|
'<td class="column8 style1 n">0</td>', |
98
|
|
|
'<td class="column9 style1 n">1</td>', |
99
|
|
|
'<td class="column10 style1 n">1</td>', |
100
|
|
|
'<td class="column11 style1 n">5</td>', |
101
|
|
|
'<td class="column12 style1 n">1</td>']]]; |
102
|
|
|
} |
103
|
|
|
} |
104
|
|
|
|