diff --git a/col.go b/col.go index ee7f6e622c..cb84a10d90 100644 --- a/col.go +++ b/col.go @@ -546,7 +546,7 @@ func (ws *xlsxWorksheet) setColWidth(minVal, maxVal int, width float64) { // and check the worksheet columns. func flatCols(col xlsxCol, cols []xlsxCol, replacer func(fc, c xlsxCol) xlsxCol) []xlsxCol { var fc []xlsxCol - for i := col.Min; i <= col.Max; i++ { + for i := max(MinColumns, col.Min); i <= min(MaxColumns, col.Max); i++ { var c xlsxCol _ = deepcopy.Copy(&c, col) c.Min, c.Max = i, i @@ -561,7 +561,7 @@ func flatCols(col xlsxCol, cols []xlsxCol, replacer func(fc, c xlsxCol) xlsxCol) return -1, false } for _, column := range cols { - for i := column.Min; i <= column.Max; i++ { + for i := max(MinColumns, column.Min); i <= min(MaxColumns, column.Max); i++ { if idx, ok := inFlat(i, fc); ok { fc[idx] = replacer(fc[idx], column) continue diff --git a/col_test.go b/col_test.go index fcea60f668..24d9fef45d 100644 --- a/col_test.go +++ b/col_test.go @@ -436,6 +436,19 @@ func TestColWidth(t *testing.T) { assert.NoError(t, f.SaveAs(filepath.Join("test", "TestColWidth.xlsx"))) convertRowHeightToPixels(0) + + t.Run("with_invalid_column_number", func(t *testing.T) { + f := NewFile() + ws, err := f.workSheetReader("Sheet1") + assert.NoError(t, err) + ws.Cols = &xlsxCols{Col: []xlsxCol{{Min: 0, Max: MaxColumns + 1, Width: float64Ptr(9)}}} + assert.NoError(t, f.SetColWidth("Sheet1", "A", "A", 12)) + assert.Equal(t, len(ws.Cols.Col), MaxColumns) + width, err := f.GetColWidth("Sheet1", "A") + assert.NoError(t, err) + assert.Equal(t, 12.0, width) + assert.NoError(t, f.Close()) + }) } func TestGetColStyle(t *testing.T) {