summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--col.go53
-rw-r--r--rows.go27
2 files changed, 80 insertions, 0 deletions
diff --git a/col.go b/col.go
index 51ad8a7..515e064 100644
--- a/col.go
+++ b/col.go
@@ -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:
//
diff --git a/rows.go b/rows.go
index d005183..88ff512 100644
--- a/rows.go
+++ b/rows.go
@@ -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:
//