- New functions `GetColVisible()` and `SetColVisible()` added, relate issue #61;

- go test updated;
- Fix typo
This commit is contained in:
Ri Xu 2017-06-15 11:03:29 +08:00
parent a9f671d98f
commit 9928bbc7c8
3 changed files with 74 additions and 1 deletions

53
col.go
View File

@ -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:
//

View File

@ -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 {

View File

@ -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 {