@@ -6379,6 +6379,35 @@ func TestCalcCellResolver(t *testing.T) {
6379
6379
assert .NoError (t , err )
6380
6380
assert .Equal (t , expected , result )
6381
6381
}
6382
+ // Test calculates formula that reference date and error type cells
6383
+ assert .NoError (t , f .SetCellValue ("Sheet1" , "C1" , "20200208T080910.123" ))
6384
+ assert .NoError (t , f .SetCellValue ("Sheet1" , "C2" , "2020-07-10 15:00:00.000" ))
6385
+ assert .NoError (t , f .SetCellValue ("Sheet1" , "C3" , formulaErrorDIV ))
6386
+ ws , ok := f .Sheet .Load ("xl/worksheets/sheet1.xml" )
6387
+ assert .True (t , ok )
6388
+ ws .(* xlsxWorksheet ).SheetData .Row [0 ].C [2 ].T = "d"
6389
+ ws .(* xlsxWorksheet ).SheetData .Row [0 ].C [2 ].V = "20200208T080910.123"
6390
+ ws .(* xlsxWorksheet ).SheetData .Row [1 ].C [2 ].T = "d"
6391
+ ws .(* xlsxWorksheet ).SheetData .Row [1 ].C [2 ].V = "2020-07-10 15:00:00.000"
6392
+ ws .(* xlsxWorksheet ).SheetData .Row [2 ].C [2 ].T = "e"
6393
+ ws .(* xlsxWorksheet ).SheetData .Row [2 ].C [2 ].V = formulaErrorDIV
6394
+ for _ , tbl := range [][]string {
6395
+ {"D1" , "=SUM(C1,1)" , "43870.3397004977" },
6396
+ {"D2" , "=LEN(C2)" , "23" },
6397
+ {"D3" , "=IFERROR(C3,TRUE)" , "TRUE" },
6398
+ } {
6399
+ assert .NoError (t , f .SetCellFormula ("Sheet1" , tbl [0 ], tbl [1 ]))
6400
+ result , err := f .CalcCellValue ("Sheet1" , tbl [0 ])
6401
+ assert .NoError (t , err )
6402
+ assert .Equal (t , tbl [2 ], result )
6403
+ }
6404
+ // Test calculates formula that reference invalid cell
6405
+ assert .NoError (t , f .SetCellValue ("Sheet1" , "E1" , "E1" ))
6406
+ assert .NoError (t , f .SetCellFormula ("Sheet1" , "F1" , "=LEN(E1)" ))
6407
+ f .SharedStrings = nil
6408
+ f .Pkg .Store (defaultXMLPathSharedStrings , MacintoshCyrillicCharset )
6409
+ _ , err := f .CalcCellValue ("Sheet1" , "F1" )
6410
+ assert .EqualError (t , err , "XML syntax error on line 1: invalid UTF-8" )
6382
6411
}
6383
6412
6384
6413
func TestEvalInfixExp (t * testing.T ) {
0 commit comments