浏览代码

Added functions to set and get outline level for columns and rows.

Ilya Kuznetsov 7 年之前
父节点
当前提交
e70618d084
共有 2 个文件被更改,包括 80 次插入0 次删除
  1. 53 0
      col.go
  2. 27 0
      rows.go

+ 53 - 0
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:
 //

+ 27 - 0
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:
 //