2019-05-16 13:36:50 +08:00
|
|
|
package excelize
|
|
|
|
|
|
|
|
import (
|
|
|
|
"path/filepath"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestColumnVisibility(t *testing.T) {
|
|
|
|
t.Run("TestBook1", func(t *testing.T) {
|
|
|
|
f, err := prepareTestBook1()
|
2019-09-24 21:53:19 +08:00
|
|
|
assert.NoError(t, err)
|
2019-05-16 13:36:50 +08:00
|
|
|
|
2020-01-22 06:42:44 +08:00
|
|
|
// Hide/display a column with SetColVisible
|
2019-05-16 13:36:50 +08:00
|
|
|
assert.NoError(t, f.SetColVisible("Sheet1", "F", false))
|
|
|
|
assert.NoError(t, f.SetColVisible("Sheet1", "F", true))
|
|
|
|
visible, err := f.GetColVisible("Sheet1", "F")
|
|
|
|
assert.Equal(t, true, visible)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
2020-01-22 06:42:44 +08:00
|
|
|
// Test hiding a few columns SetColVisible(...false)...
|
|
|
|
assert.NoError(t, f.SetColVisible("Sheet1", "F:V", false))
|
|
|
|
visible, err = f.GetColVisible("Sheet1", "F")
|
|
|
|
assert.Equal(t, false, visible)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
visible, err = f.GetColVisible("Sheet1", "U")
|
|
|
|
assert.Equal(t, false, visible)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
visible, err = f.GetColVisible("Sheet1", "V")
|
|
|
|
assert.Equal(t, false, visible)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
// ...and displaying them back SetColVisible(...true)
|
2020-02-07 00:25:01 +08:00
|
|
|
assert.NoError(t, f.SetColVisible("Sheet1", "V:F", true))
|
2020-01-22 06:42:44 +08:00
|
|
|
visible, err = f.GetColVisible("Sheet1", "F")
|
|
|
|
assert.Equal(t, true, visible)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
visible, err = f.GetColVisible("Sheet1", "U")
|
|
|
|
assert.Equal(t, true, visible)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
visible, err = f.GetColVisible("Sheet1", "G")
|
|
|
|
assert.Equal(t, true, visible)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
// Test get column visible on an inexistent worksheet.
|
2019-05-16 13:36:50 +08:00
|
|
|
_, err = f.GetColVisible("SheetN", "F")
|
|
|
|
assert.EqualError(t, err, "sheet SheetN is not exist")
|
|
|
|
|
2020-01-22 06:42:44 +08:00
|
|
|
// Test get column visible with illegal cell coordinates.
|
2019-05-16 13:36:50 +08:00
|
|
|
_, err = f.GetColVisible("Sheet1", "*")
|
|
|
|
assert.EqualError(t, err, `invalid column name "*"`)
|
|
|
|
assert.EqualError(t, f.SetColVisible("Sheet1", "*", false), `invalid column name "*"`)
|
|
|
|
|
|
|
|
f.NewSheet("Sheet3")
|
|
|
|
assert.NoError(t, f.SetColVisible("Sheet3", "E", false))
|
2020-02-07 00:25:01 +08:00
|
|
|
assert.EqualError(t, f.SetColVisible("Sheet1", "A:-1", true), "invalid column name \"-1\"")
|
2019-05-16 13:36:50 +08:00
|
|
|
assert.EqualError(t, f.SetColVisible("SheetN", "E", false), "sheet SheetN is not exist")
|
|
|
|
assert.NoError(t, f.SaveAs(filepath.Join("test", "TestColumnVisibility.xlsx")))
|
|
|
|
})
|
|
|
|
|
|
|
|
t.Run("TestBook3", func(t *testing.T) {
|
|
|
|
f, err := prepareTestBook3()
|
2019-09-24 21:53:19 +08:00
|
|
|
assert.NoError(t, err)
|
2019-12-24 01:09:28 +08:00
|
|
|
visible, err := f.GetColVisible("Sheet1", "B")
|
|
|
|
assert.Equal(t, true, visible)
|
|
|
|
assert.NoError(t, err)
|
2019-05-16 13:36:50 +08:00
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestOutlineLevel(t *testing.T) {
|
|
|
|
f := NewFile()
|
2019-12-24 01:09:28 +08:00
|
|
|
level, err := f.GetColOutlineLevel("Sheet1", "D")
|
|
|
|
assert.Equal(t, uint8(0), level)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
2019-05-16 13:36:50 +08:00
|
|
|
f.NewSheet("Sheet2")
|
2019-09-24 21:53:19 +08:00
|
|
|
assert.NoError(t, f.SetColOutlineLevel("Sheet1", "D", 4))
|
2019-12-24 01:09:28 +08:00
|
|
|
|
|
|
|
level, err = f.GetColOutlineLevel("Sheet1", "D")
|
|
|
|
assert.Equal(t, uint8(4), level)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
level, err = f.GetColOutlineLevel("Shee2", "A")
|
|
|
|
assert.Equal(t, uint8(0), level)
|
|
|
|
assert.EqualError(t, err, "sheet Shee2 is not exist")
|
|
|
|
|
2019-09-24 21:53:19 +08:00
|
|
|
assert.NoError(t, f.SetColWidth("Sheet2", "A", "D", 13))
|
|
|
|
assert.NoError(t, f.SetColOutlineLevel("Sheet2", "B", 2))
|
|
|
|
assert.NoError(t, f.SetRowOutlineLevel("Sheet1", 2, 7))
|
|
|
|
assert.EqualError(t, f.SetColOutlineLevel("Sheet1", "D", 8), "invalid outline level")
|
|
|
|
assert.EqualError(t, f.SetRowOutlineLevel("Sheet1", 2, 8), "invalid outline level")
|
2019-10-26 20:55:24 +08:00
|
|
|
// Test set row outline level on not exists worksheet.
|
|
|
|
assert.EqualError(t, f.SetRowOutlineLevel("SheetN", 1, 4), "sheet SheetN is not exist")
|
|
|
|
// Test get row outline level on not exists worksheet.
|
2019-12-24 01:09:28 +08:00
|
|
|
_, err = f.GetRowOutlineLevel("SheetN", 1)
|
2019-10-26 20:55:24 +08:00
|
|
|
assert.EqualError(t, err, "sheet SheetN is not exist")
|
2019-05-16 13:36:50 +08:00
|
|
|
|
|
|
|
// Test set and get column outline level with illegal cell coordinates.
|
|
|
|
assert.EqualError(t, f.SetColOutlineLevel("Sheet1", "*", 1), `invalid column name "*"`)
|
2019-10-26 20:55:24 +08:00
|
|
|
_, err = f.GetColOutlineLevel("Sheet1", "*")
|
2019-05-16 13:36:50 +08:00
|
|
|
assert.EqualError(t, err, `invalid column name "*"`)
|
|
|
|
|
|
|
|
// Test set column outline level on not exists worksheet.
|
|
|
|
assert.EqualError(t, f.SetColOutlineLevel("SheetN", "E", 2), "sheet SheetN is not exist")
|
|
|
|
|
|
|
|
assert.EqualError(t, f.SetRowOutlineLevel("Sheet1", 0, 1), "invalid row number 0")
|
2019-12-24 01:09:28 +08:00
|
|
|
level, err = f.GetRowOutlineLevel("Sheet1", 2)
|
2019-05-16 13:36:50 +08:00
|
|
|
assert.NoError(t, err)
|
2019-09-24 21:53:19 +08:00
|
|
|
assert.Equal(t, uint8(7), level)
|
2019-05-16 13:36:50 +08:00
|
|
|
|
|
|
|
_, err = f.GetRowOutlineLevel("Sheet1", 0)
|
|
|
|
assert.EqualError(t, err, `invalid row number 0`)
|
|
|
|
|
|
|
|
level, err = f.GetRowOutlineLevel("Sheet1", 10)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, uint8(0), level)
|
|
|
|
|
2019-09-24 21:53:19 +08:00
|
|
|
assert.NoError(t, f.SaveAs(filepath.Join("test", "TestOutlineLevel.xlsx")))
|
2019-05-16 13:36:50 +08:00
|
|
|
|
|
|
|
f, err = OpenFile(filepath.Join("test", "Book1.xlsx"))
|
2019-09-24 21:53:19 +08:00
|
|
|
assert.NoError(t, err)
|
2019-12-24 01:09:28 +08:00
|
|
|
assert.NoError(t, f.SetColOutlineLevel("Sheet2", "B", 2))
|
2019-05-16 13:36:50 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func TestSetColStyle(t *testing.T) {
|
|
|
|
f := NewFile()
|
|
|
|
style, err := f.NewStyle(`{"fill":{"type":"pattern","color":["#94d3a2"],"pattern":1}}`)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
// Test set column style on not exists worksheet.
|
|
|
|
assert.EqualError(t, f.SetColStyle("SheetN", "E", style), "sheet SheetN is not exist")
|
|
|
|
// Test set column style with illegal cell coordinates.
|
|
|
|
assert.EqualError(t, f.SetColStyle("Sheet1", "*", style), `invalid column name "*"`)
|
|
|
|
assert.EqualError(t, f.SetColStyle("Sheet1", "A:*", style), `invalid column name "*"`)
|
|
|
|
|
|
|
|
assert.NoError(t, f.SetColStyle("Sheet1", "B", style))
|
|
|
|
// Test set column style with already exists column with style.
|
|
|
|
assert.NoError(t, f.SetColStyle("Sheet1", "B", style))
|
|
|
|
assert.NoError(t, f.SetColStyle("Sheet1", "D:C", style))
|
|
|
|
assert.NoError(t, f.SaveAs(filepath.Join("test", "TestSetColStyle.xlsx")))
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestColWidth(t *testing.T) {
|
|
|
|
f := NewFile()
|
2019-12-24 01:09:28 +08:00
|
|
|
assert.NoError(t, f.SetColWidth("Sheet1", "B", "A", 12))
|
|
|
|
assert.NoError(t, f.SetColWidth("Sheet1", "A", "B", 12))
|
|
|
|
width, err := f.GetColWidth("Sheet1", "A")
|
|
|
|
assert.Equal(t, float64(12), width)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
width, err = f.GetColWidth("Sheet1", "C")
|
|
|
|
assert.Equal(t, float64(64), width)
|
|
|
|
assert.NoError(t, err)
|
2019-05-16 13:36:50 +08:00
|
|
|
|
|
|
|
// Test set and get column width with illegal cell coordinates.
|
2019-12-24 01:09:28 +08:00
|
|
|
width, err = f.GetColWidth("Sheet1", "*")
|
|
|
|
assert.Equal(t, float64(64), width)
|
2019-05-16 13:36:50 +08:00
|
|
|
assert.EqualError(t, err, `invalid column name "*"`)
|
|
|
|
assert.EqualError(t, f.SetColWidth("Sheet1", "*", "B", 1), `invalid column name "*"`)
|
|
|
|
assert.EqualError(t, f.SetColWidth("Sheet1", "A", "*", 1), `invalid column name "*"`)
|
|
|
|
|
|
|
|
// Test set column width on not exists worksheet.
|
|
|
|
assert.EqualError(t, f.SetColWidth("SheetN", "B", "A", 12), "sheet SheetN is not exist")
|
|
|
|
|
|
|
|
// Test get column width on not exists worksheet.
|
|
|
|
_, err = f.GetColWidth("SheetN", "A")
|
|
|
|
assert.EqualError(t, err, "sheet SheetN is not exist")
|
|
|
|
|
|
|
|
assert.NoError(t, f.SaveAs(filepath.Join("test", "TestColWidth.xlsx")))
|
|
|
|
convertRowHeightToPixels(0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestInsertCol(t *testing.T) {
|
|
|
|
f := NewFile()
|
2020-04-23 02:01:14 +08:00
|
|
|
sheet1 := f.GetSheetName(0)
|
2019-05-16 13:36:50 +08:00
|
|
|
|
|
|
|
fillCells(f, sheet1, 10, 10)
|
|
|
|
|
2019-12-24 01:09:28 +08:00
|
|
|
assert.NoError(t, f.SetCellHyperLink(sheet1, "A5", "https://github.com/360EntSecGroup-Skylar/excelize", "External"))
|
|
|
|
assert.NoError(t, f.MergeCell(sheet1, "A1", "C3"))
|
2019-05-16 13:36:50 +08:00
|
|
|
|
2019-09-24 21:53:19 +08:00
|
|
|
assert.NoError(t, f.AutoFilter(sheet1, "A2", "B2", `{"column":"B","expression":"x != blanks"}`))
|
2019-05-16 13:36:50 +08:00
|
|
|
assert.NoError(t, f.InsertCol(sheet1, "A"))
|
|
|
|
|
|
|
|
// Test insert column with illegal cell coordinates.
|
|
|
|
assert.EqualError(t, f.InsertCol("Sheet1", "*"), `invalid column name "*"`)
|
|
|
|
|
|
|
|
assert.NoError(t, f.SaveAs(filepath.Join("test", "TestInsertCol.xlsx")))
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestRemoveCol(t *testing.T) {
|
|
|
|
f := NewFile()
|
2020-04-23 02:01:14 +08:00
|
|
|
sheet1 := f.GetSheetName(0)
|
2019-05-16 13:36:50 +08:00
|
|
|
|
|
|
|
fillCells(f, sheet1, 10, 15)
|
|
|
|
|
2019-12-24 01:09:28 +08:00
|
|
|
assert.NoError(t, f.SetCellHyperLink(sheet1, "A5", "https://github.com/360EntSecGroup-Skylar/excelize", "External"))
|
|
|
|
assert.NoError(t, f.SetCellHyperLink(sheet1, "C5", "https://github.com", "External"))
|
2019-05-16 13:36:50 +08:00
|
|
|
|
2019-12-24 01:09:28 +08:00
|
|
|
assert.NoError(t, f.MergeCell(sheet1, "A1", "B1"))
|
|
|
|
assert.NoError(t, f.MergeCell(sheet1, "A2", "B2"))
|
2019-05-16 13:36:50 +08:00
|
|
|
|
|
|
|
assert.NoError(t, f.RemoveCol(sheet1, "A"))
|
|
|
|
assert.NoError(t, f.RemoveCol(sheet1, "A"))
|
|
|
|
|
|
|
|
// Test remove column with illegal cell coordinates.
|
|
|
|
assert.EqualError(t, f.RemoveCol("Sheet1", "*"), `invalid column name "*"`)
|
|
|
|
|
|
|
|
// Test remove column on not exists worksheet.
|
|
|
|
assert.EqualError(t, f.RemoveCol("SheetN", "B"), "sheet SheetN is not exist")
|
|
|
|
|
|
|
|
assert.NoError(t, f.SaveAs(filepath.Join("test", "TestRemoveCol.xlsx")))
|
|
|
|
}
|