diff options
author | xuri <xuri.me@gmail.com> | 2018-05-09 10:40:00 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-09 10:40:00 +0800 |
commit | 18aa606ffe0f5be5c7b77b2b99e261d9a093174b (patch) | |
tree | d87708ef86c36f84b67926a759391ef9204f8ada | |
parent | e8961f0affd1ce9656a57b24cad4cfd080781556 (diff) | |
parent | e70618d0847d0b7e4a53ed918aee22a665020ead (diff) |
Merge pull request #221 from srdolor/outline
Added functions to set and get outline level for columns and rows.
-rw-r--r-- | col.go | 53 | ||||
-rw-r--r-- | rows.go | 27 |
2 files changed, 80 insertions, 0 deletions
@@ -67,6 +67,59 @@ func (f *File) SetColVisible(sheet, column string, visible bool) { xlsx.Cols.Col = append(xlsx.Cols.Col, col) } +// GetColOutlineLevel provides a function to get outline level of a single column by given +// worksheet name and column name. For example, get outline level of column D +// in Sheet1: +// +// xlsx.getColOutlineLevel("Sheet1", "D") +// +func (f *File) GetColOutlineLevel(sheet, column string) uint8 { + xlsx := f.workSheetReader(sheet) + col := TitleToNumber(strings.ToUpper(column)) + 1 + level := uint8(0) + if xlsx.Cols == nil { + return level + } + for c := range xlsx.Cols.Col { + if xlsx.Cols.Col[c].Min <= col && col <= xlsx.Cols.Col[c].Max { + level = xlsx.Cols.Col[c].OutlineLevel + } + } + return level +} + +// SetColOutlineLevel provides a function to set outline level of a single column by given +// worksheet name and column name. For example, set outline level of column D in Sheet1 to 2: +// +// xlsx.SetColOutlineLevel("Sheet1", "D", 2) +// +func (f *File) SetColOutlineLevel(sheet, column string, level uint8) { + xlsx := f.workSheetReader(sheet) + c := TitleToNumber(strings.ToUpper(column)) + 1 + col := xlsxCol{ + Min: c, + Max: c, + OutlineLevel: level, + 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 xlsx.Cols.Col[v].Min <= c && c <= xlsx.Cols.Col[v].Max { + col = xlsx.Cols.Col[v] + } + } + col.Min = c + col.Max = c + col.OutlineLevel = level + 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: // @@ -301,6 +301,33 @@ func (f *File) GetRowVisible(sheet string, rowIndex int) bool { return !xlsx.SheetData.Row[rowIndex].Hidden } +// SetRowOutlineLevel provides a function to set outline level number of a single row by given +// worksheet name and row index. For example, outline row 2 in Sheet1 to level 1: +// +// xlsx.SetRowOutlineLevel("Sheet1", 2, 1) +// +func (f *File) SetRowOutlineLevel(sheet string, rowIndex int, level uint8) { + xlsx := f.workSheetReader(sheet) + rows := rowIndex + 1 + cells := 0 + completeRow(xlsx, rows, cells) + xlsx.SheetData.Row[rowIndex].OutlineLevel = level +} + +// GetRowOutlineLevel provides a function to get outline level number of a single row by given +// worksheet name and row index. For example, get outline number of row 2 in +// Sheet1: +// +// xlsx.GetRowOutlineLevel("Sheet1", 2) +// +func (f *File) GetRowOutlineLevel(sheet string, rowIndex int) uint8 { + xlsx := f.workSheetReader(sheet) + rows := rowIndex + 1 + cells := 0 + completeRow(xlsx, rows, cells) + return xlsx.SheetData.Row[rowIndex].OutlineLevel +} + // RemoveRow provides function to remove single row by given worksheet name and // row index. For example, remove row 3 in Sheet1: // |