From 648cf7891cff26b014fba45397d09bc40e3fb578 Mon Sep 17 00:00:00 2001 From: Thomas Charbonnel Date: Thu, 4 Aug 2022 16:50:33 +0800 Subject: [PATCH] This closes #1299 skip write nil values in SetRow (#1301) Co-authored-by: Thomas Charbonnel --- stream.go | 3 +++ stream_test.go | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/stream.go b/stream.go index f5de73e694b..cb1d51457c7 100644 --- a/stream.go +++ b/stream.go @@ -327,6 +327,9 @@ func (sw *StreamWriter) SetRow(axis string, values []interface{}, opts ...RowOpt } fmt.Fprintf(&sw.rawData, ``, row, attrs) for i, val := range values { + if val == nil { + continue + } axis, err := CoordinatesToCellName(col+i, row) if err != nil { return err diff --git a/stream_test.go b/stream_test.go index 36df16f5709..eb92c3e74fb 100644 --- a/stream_test.go +++ b/stream_test.go @@ -270,6 +270,17 @@ func TestSetRow(t *testing.T) { assert.EqualError(t, streamWriter.SetRow("A", []interface{}{}), newCellNameToCoordinatesError("A", newInvalidCellNameError("A")).Error()) } +func TestSetRowNilValues(t *testing.T) { + file := NewFile() + streamWriter, err := file.NewStreamWriter("Sheet1") + assert.NoError(t, err) + streamWriter.SetRow("A1", []interface{}{nil, nil, Cell{Value: "foo"}}) + streamWriter.Flush() + ws, err := file.workSheetReader("Sheet1") + assert.NoError(t, err) + assert.NotEqual(t, ws.SheetData.Row[0].C[0].XMLName.Local, "c") +} + func TestSetCellValFunc(t *testing.T) { f := NewFile() sw, err := f.NewStreamWriter("Sheet1")