forked from p30928647/excelize
- New functions `GetColVisible()` and `SetColVisible()` added, relate issue #61;
- go test updated; - Fix typo
This commit is contained in:
parent
a9f671d98f
commit
9928bbc7c8
53
col.go
53
col.go
|
@ -13,6 +13,59 @@ const (
|
|||
EMU int = 9525
|
||||
)
|
||||
|
||||
// GetColVisible provides a function to get visible of a single column by given
|
||||
// worksheet index and column name. For example, get visible state of column D
|
||||
// in Sheet1:
|
||||
//
|
||||
// xlsx.GetColVisible("Sheet1", "D")
|
||||
//
|
||||
func (f *File) GetColVisible(sheet, column string) bool {
|
||||
xlsx := f.workSheetReader(sheet)
|
||||
col := titleToNumber(strings.ToUpper(column)) + 1
|
||||
visible := true
|
||||
if xlsx.Cols == nil {
|
||||
return visible
|
||||
}
|
||||
for _, c := range xlsx.Cols.Col {
|
||||
if c.Min <= col && col <= c.Max {
|
||||
visible = !c.Hidden
|
||||
}
|
||||
}
|
||||
return visible
|
||||
}
|
||||
|
||||
// SetColVisible provides a function to set visible of a single column by given
|
||||
// worksheet index and column name. For example, hide column D in Sheet1:
|
||||
//
|
||||
// xlsx.SetColVisible("Sheet1", "D", false)
|
||||
//
|
||||
func (f *File) SetColVisible(sheet, column string, visible bool) {
|
||||
xlsx := f.workSheetReader(sheet)
|
||||
c := titleToNumber(strings.ToUpper(column)) + 1
|
||||
col := xlsxCol{
|
||||
Min: c,
|
||||
Max: c,
|
||||
Hidden: !visible,
|
||||
CustomWidth: true,
|
||||
}
|
||||
if xlsx.Cols == nil {
|
||||
cols := xlsxCols{}
|
||||
cols.Col = append(cols.Col, col)
|
||||
xlsx.Cols = &cols
|
||||
return
|
||||
}
|
||||
for _, v := range xlsx.Cols.Col {
|
||||
if v.Min <= c && c <= v.Max {
|
||||
col = v
|
||||
}
|
||||
}
|
||||
col.Min = c
|
||||
col.Max = c
|
||||
col.Hidden = !visible
|
||||
col.CustomWidth = true
|
||||
xlsx.Cols.Col = append(xlsx.Cols.Col, col)
|
||||
}
|
||||
|
||||
// SetColWidth provides function to set the width of a single column or multiple
|
||||
// columns. For example:
|
||||
//
|
||||
|
|
|
@ -492,6 +492,26 @@ func TestRowVisibility(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestColumnVisibility(t *testing.T) {
|
||||
xlsx, err := OpenFile("./test/Workbook_2.xlsx")
|
||||
if err != nil {
|
||||
t.Log(err)
|
||||
}
|
||||
xlsx.SetColVisible("Sheet1", "F", false)
|
||||
xlsx.SetColVisible("Sheet1", "F", true)
|
||||
xlsx.GetColVisible("Sheet1", "F")
|
||||
xlsx.SetColVisible("Sheet3", "E", false)
|
||||
err = xlsx.Save()
|
||||
if err != nil {
|
||||
t.Log(err)
|
||||
}
|
||||
xlsx, err = OpenFile("./test/Workbook_3.xlsx")
|
||||
if err != nil {
|
||||
t.Log(err)
|
||||
}
|
||||
xlsx.GetColVisible("Sheet1", "B")
|
||||
}
|
||||
|
||||
func TestCopySheet(t *testing.T) {
|
||||
xlsx, err := OpenFile("./test/Workbook_2.xlsx")
|
||||
if err != nil {
|
||||
|
|
2
table.go
2
table.go
|
@ -297,7 +297,7 @@ func (f *File) autoFilter(sheet, ref string, refRange, hxAxis int, formatSet *fo
|
|||
return nil
|
||||
}
|
||||
|
||||
// writeAutoFilter provides funtion to check for single or double custom filters
|
||||
// writeAutoFilter provides function to check for single or double custom filters
|
||||
// as default filters and handle them accordingly.
|
||||
func (f *File) writeAutoFilter(filter *xlsxAutoFilter, exp []int, tokens []string) {
|
||||
if len(exp) == 1 && exp[0] == 2 {
|
||||
|
|
Loading…
Reference in New Issue