@@ -563,7 +563,7 @@ func TestGetValueFrom(t *testing.T) {
563
563
assert .NoError (t , err )
564
564
value , err := c .getValueFrom (f , sst , false )
565
565
assert .NoError (t , err )
566
- assert .Equal ( t , "" , value )
566
+ assert .Empty ( t , value )
567
567
568
568
c = xlsxC {T : "s" , V : " 1 " }
569
569
value , err = c .getValueFrom (f , & xlsxSST {Count : 1 , SI : []xlsxSI {{}, {T : & xlsxT {Val : "s" }}}}, false )
@@ -602,13 +602,17 @@ func TestGetCellFormula(t *testing.T) {
602
602
formula , err := f .GetCellFormula ("Sheet1" , "B3" )
603
603
assert .NoError (t , err )
604
604
assert .Equal (t , expected , formula )
605
+ // Test get shared formula form cache
606
+ formula , err = f .GetCellFormula ("Sheet1" , "B3" )
607
+ assert .NoError (t , err )
608
+ assert .Equal (t , expected , formula )
605
609
}
606
610
607
611
f .Sheet .Delete ("xl/worksheets/sheet1.xml" )
608
612
f .Pkg .Store ("xl/worksheets/sheet1.xml" , []byte (`<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><sheetData><row r="2"><c r="B2"><f t="shared" si="0"></f></c></row></sheetData></worksheet>` ))
609
613
formula , err := f .GetCellFormula ("Sheet1" , "B2" )
610
614
assert .NoError (t , err )
611
- assert .Equal ( t , "" , formula )
615
+ assert .Empty ( t , formula )
612
616
613
617
// Test get array formula with invalid cell range reference
614
618
f = NewFile ()
@@ -628,6 +632,81 @@ func TestGetCellFormula(t *testing.T) {
628
632
f .Sheet .Delete ("xl/worksheets/sheet1.xml" )
629
633
f .Pkg .Store ("xl/worksheets/sheet1.xml" , MacintoshCyrillicCharset )
630
634
assert .EqualError (t , f .setArrayFormulaCells (), "XML syntax error on line 1: invalid UTF-8" )
635
+
636
+ // Test get shared formula after updated refer cell formula, the shared
637
+ // formula cell reference range covered the previous.
638
+ f = NewFile ()
639
+ formulaType , ref = STCellFormulaTypeShared , "C2:C6"
640
+ assert .NoError (t , f .SetCellFormula ("Sheet1" , "C2" , "=A2+B2" , FormulaOpts {Ref : & ref , Type : & formulaType }))
641
+ formula , err = f .GetCellFormula ("Sheet1" , "C2" )
642
+ assert .NoError (t , err )
643
+ assert .Equal (t , "A2+B2" , formula )
644
+ formula , err = f .GetCellFormula ("Sheet1" , "C6" )
645
+ assert .NoError (t , err )
646
+ assert .Equal (t , "A6+B6" , formula )
647
+
648
+ formulaType , ref = STCellFormulaTypeShared , "C2:C8"
649
+ assert .NoError (t , f .SetCellFormula ("Sheet1" , "C2" , "=A2*B2" , FormulaOpts {Ref : & ref , Type : & formulaType }))
650
+ formula , err = f .GetCellFormula ("Sheet1" , "C2" )
651
+ assert .NoError (t , err )
652
+ assert .Equal (t , "A2*B2" , formula )
653
+ formula , err = f .GetCellFormula ("Sheet1" , "C8" )
654
+ assert .NoError (t , err )
655
+ assert .Equal (t , "A8*B8" , formula )
656
+ assert .NoError (t , f .Close ())
657
+
658
+ // Test get shared formula after updated refer cell formula, the shared
659
+ // formula cell reference range not over the previous.
660
+ f = NewFile ()
661
+ formulaType , ref = STCellFormulaTypeShared , "C2:C6"
662
+ assert .NoError (t , f .SetCellFormula ("Sheet1" , "C2" , "=A2+B2" , FormulaOpts {Ref : & ref , Type : & formulaType }))
663
+ formula , err = f .GetCellFormula ("Sheet1" , "C2" )
664
+ assert .NoError (t , err )
665
+ assert .Equal (t , "A2+B2" , formula )
666
+ formula , err = f .GetCellFormula ("Sheet1" , "C6" )
667
+ assert .NoError (t , err )
668
+ assert .Equal (t , "A6+B6" , formula )
669
+
670
+ formulaType , ref = STCellFormulaTypeShared , "C2:C4"
671
+ assert .NoError (t , f .SetCellFormula ("Sheet1" , "C2" , "=A2*B2" , FormulaOpts {Ref : & ref , Type : & formulaType }))
672
+ formula , err = f .GetCellFormula ("Sheet1" , "C2" )
673
+ assert .NoError (t , err )
674
+ assert .Equal (t , "A2*B2" , formula )
675
+ formula , err = f .GetCellFormula ("Sheet1" , "C6" )
676
+ assert .NoError (t , err )
677
+ assert .Empty (t , formula )
678
+
679
+ // Test get shared formula after remove refer cell formula
680
+ f = NewFile ()
681
+ formulaType , ref = STCellFormulaTypeShared , "C2:C6"
682
+ assert .NoError (t , f .SetCellFormula ("Sheet1" , "C2" , "=A2+B2" , FormulaOpts {Ref : & ref , Type : & formulaType }))
683
+
684
+ assert .NoError (t , f .SetCellFormula ("Sheet1" , "C2" , "" ))
685
+
686
+ formula , err = f .GetCellFormula ("Sheet1" , "C2" )
687
+ assert .NoError (t , err )
688
+ assert .Empty (t , formula )
689
+ formula , err = f .GetCellFormula ("Sheet1" , "C6" )
690
+ assert .NoError (t , err )
691
+ assert .Empty (t , formula )
692
+
693
+ formulaType , ref = STCellFormulaTypeShared , "C2:C8"
694
+ assert .NoError (t , f .SetCellFormula ("Sheet1" , "C2" , "=A2*B2" , FormulaOpts {Ref : & ref , Type : & formulaType }))
695
+ formula , err = f .GetCellFormula ("Sheet1" , "C2" )
696
+ assert .NoError (t , err )
697
+ assert .Equal (t , "A2*B2" , formula )
698
+ formula , err = f .GetCellFormula ("Sheet1" , "C8" )
699
+ assert .NoError (t , err )
700
+ assert .Equal (t , "A8*B8" , formula )
701
+ assert .NoError (t , f .Close ())
702
+ }
703
+
704
+ func TestConvertSharedFormula (t * testing.T ) {
705
+ c := xlsxC {R : "A" }
706
+ _ , err := c .convertSharedFormula ("A" )
707
+ assert .Equal (t , newCellNameToCoordinatesError ("A" , newInvalidCellNameError ("A" )), err )
708
+ _ , err = c .convertSharedFormula ("A1" )
709
+ assert .Equal (t , newCellNameToCoordinatesError ("A" , newInvalidCellNameError ("A" )), err )
631
710
}
632
711
633
712
func ExampleFile_SetCellFloat () {
0 commit comments