@@ -42,4 +42,76 @@ public function testReadExcel1904Spreadsheet(): void
42
42
self ::assertSame (43464 , $ worksheet ->getCell ('A2 ' )->getValue ());
43
43
self ::assertSame ('2022-12-31 ' , $ worksheet ->getCell ('A2 ' )->getFormattedValue ());
44
44
}
45
+
46
+ public function testNewDateInLoadedExcel1900Spreadsheet (): void
47
+ {
48
+ $ filename = 'tests/data/Reader/XLS/1900_Calendar.xls ' ;
49
+ $ reader = new Xls ();
50
+ $ spreadsheet = $ reader ->load ($ filename );
51
+
52
+ $ worksheet = $ spreadsheet ->getActiveSheet ();
53
+ $ worksheet ->getCell ('A4 ' )->setValue ('=DATE(2023,1,1) ' );
54
+ self ::assertEquals (44927 , $ worksheet ->getCell ('A4 ' )->getCalculatedValue ());
55
+ }
56
+
57
+ public function testNewDateInLoadedExcel1904Spreadsheet (): void
58
+ {
59
+ $ filename = 'tests/data/Reader/XLS/1904_Calendar.xls ' ;
60
+ $ reader = new Xls ();
61
+ $ spreadsheet = $ reader ->load ($ filename );
62
+
63
+ $ worksheet = $ spreadsheet ->getActiveSheet ();
64
+ $ worksheet ->getCell ('A4 ' )->setValue ('=DATE(2023,1,1) ' );
65
+ self ::assertEquals (43465 , $ worksheet ->getCell ('A4 ' )->getCalculatedValue ());
66
+ }
67
+
68
+ public function testSwitchCalendars (): void
69
+ {
70
+ $ filename1900 = 'tests/data/Reader/XLS/1900_Calendar.xls ' ;
71
+ $ reader1900 = new Xls ();
72
+ $ spreadsheet1900 = $ reader1900 ->load ($ filename1900 );
73
+ $ worksheet1900 = $ spreadsheet1900 ->getActiveSheet ();
74
+
75
+ $ filename1904 = 'tests/data/Reader/XLS/1904_Calendar.xls ' ;
76
+ $ reader1904 = new Xls ();
77
+ $ spreadsheet1904 = $ reader1904 ->load ($ filename1904 );
78
+ $ worksheet1904 = $ spreadsheet1904 ->getActiveSheet ();
79
+
80
+ self ::assertSame (44562 , $ worksheet1900 ->getCell ('A1 ' )->getValue ());
81
+ self ::assertSame ('2022-01-01 ' , $ worksheet1900 ->getCell ('A1 ' )->getFormattedValue ());
82
+ self ::assertSame (44926 , $ worksheet1900 ->getCell ('A2 ' )->getValue ());
83
+ self ::assertSame ('2022-12-31 ' , $ worksheet1900 ->getCell ('A2 ' )->getFormattedValue ());
84
+ self ::assertSame (44561 , $ worksheet1900 ->getCell ('B1 ' )->getCalculatedValue ());
85
+ self ::assertSame ('2021-12-31 ' , $ worksheet1900 ->getCell ('B1 ' )->getFormattedValue ());
86
+ self ::assertSame (44927 , $ worksheet1900 ->getCell ('B2 ' )->getCalculatedValue ());
87
+ self ::assertSame ('2023-01-01 ' , $ worksheet1900 ->getCell ('B2 ' )->getFormattedValue ());
88
+
89
+ self ::assertSame (43100 , $ worksheet1904 ->getCell ('A1 ' )->getValue ());
90
+ self ::assertSame ('2022-01-01 ' , $ worksheet1904 ->getCell ('A1 ' )->getFormattedValue ());
91
+ self ::assertSame (43464 , $ worksheet1904 ->getCell ('A2 ' )->getValue ());
92
+ self ::assertSame ('2022-12-31 ' , $ worksheet1904 ->getCell ('A2 ' )->getFormattedValue ());
93
+ self ::assertSame (43099 , $ worksheet1904 ->getCell ('B1 ' )->getCalculatedValue ());
94
+ self ::assertSame ('2021-12-31 ' , $ worksheet1904 ->getCell ('B1 ' )->getFormattedValue ());
95
+ self ::assertSame (43465 , $ worksheet1904 ->getCell ('B2 ' )->getCalculatedValue ());
96
+ self ::assertSame ('2023-01-01 ' , $ worksheet1904 ->getCell ('B2 ' )->getFormattedValue ());
97
+
98
+ // Check that accessing date values from one spreadsheet doesn't break accessing correct values from another
99
+ self ::assertSame (44561 , $ worksheet1900 ->getCell ('B1 ' )->getCalculatedValue ());
100
+ self ::assertSame ('2021-12-31 ' , $ worksheet1900 ->getCell ('B1 ' )->getFormattedValue ());
101
+ self ::assertSame (44927 , $ worksheet1900 ->getCell ('B2 ' )->getCalculatedValue ());
102
+ self ::assertSame ('2023-01-01 ' , $ worksheet1900 ->getCell ('B2 ' )->getFormattedValue ());
103
+ self ::assertSame (44562 , $ worksheet1900 ->getCell ('A1 ' )->getValue ());
104
+ self ::assertSame ('2022-01-01 ' , $ worksheet1900 ->getCell ('A1 ' )->getFormattedValue ());
105
+ self ::assertSame (44926 , $ worksheet1900 ->getCell ('A2 ' )->getValue ());
106
+ self ::assertSame ('2022-12-31 ' , $ worksheet1900 ->getCell ('A2 ' )->getFormattedValue ());
107
+
108
+ self ::assertSame (43099 , $ worksheet1904 ->getCell ('B1 ' )->getCalculatedValue ());
109
+ self ::assertSame ('2021-12-31 ' , $ worksheet1904 ->getCell ('B1 ' )->getFormattedValue ());
110
+ self ::assertSame (43465 , $ worksheet1904 ->getCell ('B2 ' )->getCalculatedValue ());
111
+ self ::assertSame ('2023-01-01 ' , $ worksheet1904 ->getCell ('B2 ' )->getFormattedValue ());
112
+ self ::assertSame (43100 , $ worksheet1904 ->getCell ('A1 ' )->getValue ());
113
+ self ::assertSame ('2022-01-01 ' , $ worksheet1904 ->getCell ('A1 ' )->getFormattedValue ());
114
+ self ::assertSame (43464 , $ worksheet1904 ->getCell ('A2 ' )->getValue ());
115
+ self ::assertSame ('2022-12-31 ' , $ worksheet1904 ->getCell ('A2 ' )->getFormattedValue ());
116
+ }
45
117
}
0 commit comments