MCPcopy
hub / github.com/qax-os/excelize / TestSetCellFormula

Function TestSetCellFormula

cell_test.go:758–823  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

756}
757
758func TestSetCellFormula(t *testing.T) {
759 f, err := OpenFile(filepath.Join("test", "Book1.xlsx"))
760 if !assert.NoError(t, err) {
761 t.FailNow()
762 }
763
764 assert.NoError(t, f.SetCellFormula("Sheet1", "B19", "SUM(Sheet2!D2,Sheet2!D11)"))
765 assert.NoError(t, f.SetCellFormula("Sheet1", "C19", "SUM(Sheet2!D2,Sheet2!D9)"))
766
767 // Test set cell formula with invalid sheet name
768 assert.Equal(t, ErrSheetNameInvalid, f.SetCellFormula("Sheet:1", "A1", "SUM(1,2)"))
769
770 // Test set cell formula with illegal rows number
771 assert.Equal(t, newCellNameToCoordinatesError("C", newInvalidCellNameError("C")), f.SetCellFormula("Sheet1", "C", "SUM(Sheet2!D2,Sheet2!D9)"))
772
773 assert.NoError(t, f.SaveAs(filepath.Join("test", "TestSetCellFormula1.xlsx")))
774 assert.NoError(t, f.Close())
775
776 f, err = OpenFile(filepath.Join("test", "CalcChain.xlsx"))
777 if !assert.NoError(t, err) {
778 t.FailNow()
779 }
780 // Test remove cell formula
781 assert.NoError(t, f.SetCellFormula("Sheet1", "A1", ""))
782 assert.NoError(t, f.SaveAs(filepath.Join("test", "TestSetCellFormula2.xlsx")))
783 // Test remove all cell formula
784 assert.NoError(t, f.SetCellFormula("Sheet1", "B1", ""))
785 assert.NoError(t, f.SaveAs(filepath.Join("test", "TestSetCellFormula3.xlsx")))
786 assert.NoError(t, f.Close())
787
788 // Test set shared formula for the cells
789 f = NewFile()
790 for r := 1; r <= 5; r++ {
791 assert.NoError(t, f.SetSheetRow("Sheet1", fmt.Sprintf("A%d", r), &[]interface{}{r, r + 1}))
792 }
793 formulaType, ref := STCellFormulaTypeShared, "C1:C5"
794 assert.NoError(t, f.SetCellFormula("Sheet1", "C1", "A1+B1", FormulaOpts{Ref: &ref, Type: &formulaType}))
795 sharedFormulaSpreadsheet := filepath.Join("test", "TestSetCellFormula4.xlsx")
796 assert.NoError(t, f.SaveAs(sharedFormulaSpreadsheet))
797
798 f, err = OpenFile(sharedFormulaSpreadsheet)
799 assert.NoError(t, err)
800 ref = "D1:D5"
801 assert.NoError(t, f.SetCellFormula("Sheet1", "D1", "A1+C1", FormulaOpts{Ref: &ref, Type: &formulaType}))
802 ref = ""
803 assert.Equal(t, ErrParameterInvalid, f.SetCellFormula("Sheet1", "D1", "A1+C1", FormulaOpts{Ref: &ref, Type: &formulaType}))
804 assert.NoError(t, f.SaveAs(filepath.Join("test", "TestSetCellFormula5.xlsx")))
805
806 // Test set table formula for the cells
807 f = NewFile()
808 for idx, row := range [][]interface{}{{"A", "B", "C"}, {1, 2}} {
809 assert.NoError(t, f.SetSheetRow("Sheet1", fmt.Sprintf("A%d", idx+1), &row))
810 }
811 assert.NoError(t, f.AddTable("Sheet1", &Table{Range: "A1:C2", Name: "Table1", StyleName: "TableStyleMedium2"}))
812 formulaType = STCellFormulaTypeDataTable
813 assert.NoError(t, f.SetCellFormula("Sheet1", "C2", "SUM(Table1[[A]:[B]])", FormulaOpts{Type: &formulaType}))
814 assert.NoError(t, f.SaveAs(filepath.Join("test", "TestSetCellFormula6.xlsx")))
815

Callers

nothing calls this directly

Calls 9

OpenFileFunction · 0.85
newInvalidCellNameErrorFunction · 0.85
NewFileFunction · 0.85
SetCellFormulaMethod · 0.80
SaveAsMethod · 0.80
SetSheetRowMethod · 0.80
CloseMethod · 0.65
AddTableMethod · 0.45

Tested by

no test coverage detected