@@ -42,4 +42,76 @@ public function testReadExcel1904Spreadsheet(): void
4242 self ::assertSame (43464 , $ worksheet ->getCell ('A2 ' )->getValue ());
4343 self ::assertSame ('2022-12-31 ' , $ worksheet ->getCell ('A2 ' )->getFormattedValue ());
4444 }
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+ }
45117}
0 commit comments