summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael W. Mitton <mmitton@yssd.org>2019-01-09 10:12:53 -0500
committerMichael W. Mitton <mmitton@yssd.org>2019-01-09 10:12:53 -0500
commit5dd00b9a004d5a7bc867ed09387cbd88fed240e4 (patch)
tree5a1b3ddba1f5ed5e88b7b80ef6a332cf001a8498
parent055d3fadf289f98a1f3cae3fe5177ccc5ea3509d (diff)
Do not create a blank fill if no fill is specified in the style format
-rw-r--r--styles.go10
-rw-r--r--styles_test.go34
2 files changed, 41 insertions, 3 deletions
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