summaryrefslogtreecommitdiff
path: root/col.go
diff options
context:
space:
mode:
authorxuri <xuri.me@gmail.com>2021-03-05 00:40:37 +0800
committerxuri <xuri.me@gmail.com>2021-03-05 01:14:13 +0800
commit71bd5e19598db4dae85d983d1f79251451cb2d9a (patch)
tree21fd895c93ef7740dcb7143ad25dd5de9237fd0e /col.go
parentdbe88d723ef8ab3d2fbb1b94aa4c5b2486b0e679 (diff)
fix incorrect default column from GetColWidth
Diffstat (limited to 'col.go')
-rw-r--r--col.go74
1 files changed, 32 insertions, 42 deletions
diff --git a/col.go b/col.go
index 0980596..ab95a0b 100644
--- a/col.go
+++ b/col.go
@@ -24,6 +24,7 @@ import (
// Define the default cell size and EMU unit of measurement.
const (
+ defaultColWidth float64 = 9.140625
defaultColWidthPixels float64 = 64
defaultRowHeight float64 = 15
defaultRowHeightPixels float64 = 20
@@ -270,32 +271,18 @@ func (f *File) GetColVisible(sheet, col string) (bool, error) {
// err := f.SetColVisible("Sheet1", "D:F", false)
//
func (f *File) SetColVisible(sheet, columns string, visible bool) error {
- var max int
-
- colsTab := strings.Split(columns, ":")
- min, err := ColumnNameToNumber(colsTab[0])
+ start, end, err := f.parseColRange(columns)
if err != nil {
return err
}
- if len(colsTab) == 2 {
- max, err = ColumnNameToNumber(colsTab[1])
- if err != nil {
- return err
- }
- } else {
- max = min
- }
- if max < min {
- min, max = max, min
- }
ws, err := f.workSheetReader(sheet)
if err != nil {
return err
}
colData := xlsxCol{
- Min: min,
- Max: max,
- Width: 9, // default width
+ Min: start,
+ Max: end,
+ Width: defaultColWidth, // default width
Hidden: !visible,
CustomWidth: true,
}
@@ -346,6 +333,25 @@ func (f *File) GetColOutlineLevel(sheet, col string) (uint8, error) {
return level, err
}
+// parseColRange parse and convert column range with column name to the column number.
+func (f *File) parseColRange(columns string) (start, end int, err error) {
+ colsTab := strings.Split(columns, ":")
+ start, err = ColumnNameToNumber(colsTab[0])
+ if err != nil {
+ return
+ }
+ end = start
+ if len(colsTab) == 2 {
+ if end, err = ColumnNameToNumber(colsTab[1]); err != nil {
+ return
+ }
+ }
+ if end < start {
+ start, end = end, start
+ }
+ return
+}
+
// SetColOutlineLevel provides a function to set outline level of a single
// column by given worksheet name and column name. The value of parameter
// 'level' is 1-7. For example, set outline level of column D in Sheet1 to 2:
@@ -401,37 +407,21 @@ func (f *File) SetColOutlineLevel(sheet, col string, level uint8) error {
// err = f.SetColStyle("Sheet1", "C:F", style)
//
func (f *File) SetColStyle(sheet, columns string, styleID int) error {
- ws, err := f.workSheetReader(sheet)
+ start, end, err := f.parseColRange(columns)
if err != nil {
return err
}
- var c1, c2 string
- var min, max int
- cols := strings.Split(columns, ":")
- c1 = cols[0]
- min, err = ColumnNameToNumber(c1)
+ ws, err := f.workSheetReader(sheet)
if err != nil {
return err
}
- if len(cols) == 2 {
- c2 = cols[1]
- max, err = ColumnNameToNumber(c2)
- if err != nil {
- return err
- }
- } else {
- max = min
- }
- if max < min {
- min, max = max, min
- }
if ws.Cols == nil {
ws.Cols = &xlsxCols{}
}
ws.Cols.Col = flatCols(xlsxCol{
- Min: min,
- Max: max,
- Width: 9,
+ Min: start,
+ Max: end,
+ Width: defaultColWidth,
Style: styleID,
}, ws.Cols.Col, func(fc, c xlsxCol) xlsxCol {
fc.BestFit = c.BestFit
@@ -638,11 +628,11 @@ func (f *File) getColWidth(sheet string, col int) int {
func (f *File) GetColWidth(sheet, col string) (float64, error) {
colNum, err := ColumnNameToNumber(col)
if err != nil {
- return defaultColWidthPixels, err
+ return defaultColWidth, err
}
ws, err := f.workSheetReader(sheet)
if err != nil {
- return defaultColWidthPixels, err
+ return defaultColWidth, err
}
if ws.Cols != nil {
var width float64
@@ -656,7 +646,7 @@ func (f *File) GetColWidth(sheet, col string) (float64, error) {
}
}
// Optimisation for when the column widths haven't changed.
- return defaultColWidthPixels, err
+ return defaultColWidth, err
}
// InsertCol provides a function to insert a new column before given column