diff --git a/styles.go b/styles.go index d075266..7ffc8ff 100644 --- a/styles.go +++ b/styles.go @@ -1907,9 +1907,11 @@ func (f *File) NewStyle(style string) (int, error) { s.Borders.Border = append(s.Borders.Border, setBorders(fs)) borderID = s.Borders.Count - 1 - s.Fills.Count++ - s.Fills.Fill = append(s.Fills.Fill, setFills(fs, true)) - fillID = s.Fills.Count - 1 + if fill := setFills(fs, true); fill != nil { + s.Fills.Count++ + s.Fills.Fill = append(s.Fills.Fill, fill) + fillID = s.Fills.Count - 1 + } applyAlignment, alignment := fs.Alignment != nil, setAlignment(fs) applyProtection, protection := fs.Protection != nil, setProtection(fs) @@ -2145,6 +2147,8 @@ func setFills(formatStyle *formatStyle, fg bool) *xlsxFill { pattern.BgColor.RGB = getPaletteColor(formatStyle.Fill.Color[0]) } fill.PatternFill = &pattern + default: + return nil } return &fill } diff --git a/styles_test.go b/styles_test.go index baa66f0..c6fbbef 100644 --- a/styles_test.go +++ b/styles_test.go @@ -6,6 +6,40 @@ import ( "github.com/stretchr/testify/assert" ) +func TestStyleFill(t *testing.T) { + cases := []struct { + label string + format string + expectFill bool + }{{ + label: "no_fill", + format: `{"alignment":{"wrap_text":true}}`, + expectFill: false, + }, { + label: "fill", + format: `{"fill":{"type":"pattern","pattern":1,"color":["#000000"]}}`, + expectFill: true, + }} + + for _, testCase := range cases { + xl := NewFile() + const sheet = "Sheet1" + + styleID, err := xl.NewStyle(testCase.format) + if err != nil { + t.Fatalf("%v", err) + } + + styles := xl.stylesReader() + style := styles.CellXfs.Xf[styleID] + if testCase.expectFill { + assert.NotEqual(t, style.FillID, 0, testCase.label) + } else { + assert.Equal(t, style.FillID, 0, testCase.label) + } + } +} + func TestSetConditionalFormat(t *testing.T) { cases := []struct { label string