summaryrefslogtreecommitdiff
path: root/cell_test.go
diff options
context:
space:
mode:
authorxuri <xuri.me@gmail.com>2021-09-03 22:51:56 +0800
committerxuri <xuri.me@gmail.com>2021-09-03 22:51:56 +0800
commit2616aa88cb2b1e45c03ada60093f4dfe7fabfb87 (patch)
tree1e27c047dce669ad33f77e54ee0ea9c57526789c /cell_test.go
parent5e1fbd6bf703b9e3ff0eba48c7ee861b99778cba (diff)
Add set shared formula support and documentation for the `SetCellFormula`
Diffstat (limited to 'cell_test.go')
-rw-r--r--cell_test.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/cell_test.go b/cell_test.go
index 7a08560..ad78436 100644
--- a/cell_test.go
+++ b/cell_test.go
@@ -313,6 +313,51 @@ func TestOverflowNumericCell(t *testing.T) {
// GOARCH=amd64 - all ok; GOARCH=386 - actual: "-2147483648"
assert.Equal(t, "8595602512225", val, "A1 should be 8595602512225")
}
+
+func TestSetCellFormula(t *testing.T) {
+ f, err := OpenFile(filepath.Join("test", "Book1.xlsx"))
+ if !assert.NoError(t, err) {
+ t.FailNow()
+ }
+
+ assert.NoError(t, f.SetCellFormula("Sheet1", "B19", "SUM(Sheet2!D2,Sheet2!D11)"))
+ assert.NoError(t, f.SetCellFormula("Sheet1", "C19", "SUM(Sheet2!D2,Sheet2!D9)"))
+
+ // Test set cell formula with illegal rows number.
+ assert.EqualError(t, f.SetCellFormula("Sheet1", "C", "SUM(Sheet2!D2,Sheet2!D9)"), `cannot convert cell "C" to coordinates: invalid cell name "C"`)
+
+ assert.NoError(t, f.SaveAs(filepath.Join("test", "TestSetCellFormula1.xlsx")))
+
+ f, err = OpenFile(filepath.Join("test", "CalcChain.xlsx"))
+ if !assert.NoError(t, err) {
+ t.FailNow()
+ }
+ // Test remove cell formula.
+ assert.NoError(t, f.SetCellFormula("Sheet1", "A1", ""))
+ assert.NoError(t, f.SaveAs(filepath.Join("test", "TestSetCellFormula2.xlsx")))
+ // Test remove all cell formula.
+ assert.NoError(t, f.SetCellFormula("Sheet1", "B1", ""))
+ assert.NoError(t, f.SaveAs(filepath.Join("test", "TestSetCellFormula3.xlsx")))
+
+ // Test set shared formula for the cells.
+ f = NewFile()
+ for r := 1; r <= 5; r++ {
+ assert.NoError(t, f.SetSheetRow("Sheet1", fmt.Sprintf("A%d", r), &[]interface{}{r, r + 1}))
+ }
+ formulaType, ref := STCellFormulaTypeShared, "C1:C5"
+ assert.NoError(t, f.SetCellFormula("Sheet1", "C1", "=A1+B1", FormulaOpts{Ref: &ref, Type: &formulaType}))
+ sharedFormulaSpreadsheet := filepath.Join("test", "TestSetCellFormula4.xlsx")
+ assert.NoError(t, f.SaveAs(sharedFormulaSpreadsheet))
+
+ f, err = OpenFile(sharedFormulaSpreadsheet)
+ assert.NoError(t, err)
+ ref = "D1:D5"
+ assert.NoError(t, f.SetCellFormula("Sheet1", "D1", "=A1+C1", FormulaOpts{Ref: &ref, Type: &formulaType}))
+ ref = ""
+ assert.EqualError(t, f.SetCellFormula("Sheet1", "D1", "=A1+C1", FormulaOpts{Ref: &ref, Type: &formulaType}), ErrParameterInvalid.Error())
+ assert.NoError(t, f.SaveAs(filepath.Join("test", "TestSetCellFormula5.xlsx")))
+}
+
func TestGetCellRichText(t *testing.T) {
f := NewFile()