Fix: skipped column style bug in StreamWriter's SetRow (#2235)

This commit is contained in:
radam9
2025-11-13 03:29:25 +01:00
committed by GitHub
parent bfa81ac875
commit 8bf639c3ad
2 changed files with 21 additions and 8 deletions

View File

@@ -413,7 +413,7 @@ func (sw *StreamWriter) SetRow(cell string, values []interface{}, opts ...RowOpt
if err != nil {
return err
}
c := xlsxC{R: ref, S: sw.worksheet.prepareCellStyle(col, row, options.StyleID)}
c := xlsxC{R: ref, S: sw.worksheet.prepareCellStyle(col+i, row, options.StyleID)}
var s int
if v, ok := val.(Cell); ok {
s, val = v.StyleID, v.Value

View File

@@ -362,22 +362,35 @@ func TestStreamSetRowWithStyle(t *testing.T) {
blueStyleID, err := file.NewStyle(&Style{Font: &Font{Color: "0000FF"}})
assert.NoError(t, err)
streamWriter, err := file.NewStreamWriter("Sheet1")
sheetName := "Sheet1"
streamWriter, err := file.NewStreamWriter(sheetName)
assert.NoError(t, err)
assert.NoError(t, streamWriter.SetColStyle(1, 1, grayStyleID))
assert.NoError(t, streamWriter.SetColStyle(3, 3, blueStyleID))
assert.NoError(t, streamWriter.SetRow("A1", []interface{}{
"value1",
Cell{Value: "value2"},
&Cell{Value: "value2"},
Cell{StyleID: blueStyleID, Value: "value3"},
&Cell{StyleID: blueStyleID, Value: "value3"},
"A1",
Cell{Value: "B1"},
&Cell{Value: "C1"},
Cell{StyleID: blueStyleID, Value: "D1"},
&Cell{StyleID: blueStyleID, Value: "E1"},
}, RowOpts{StyleID: grayStyleID}))
assert.NoError(t, streamWriter.SetRow("A2", []interface{}{
"A2",
Cell{Value: "B2"},
&Cell{Value: "C2"},
Cell{StyleID: grayStyleID, Value: "D2"},
&Cell{StyleID: blueStyleID, Value: "E2"},
}))
assert.NoError(t, streamWriter.Flush())
ws, err := file.workSheetReader("Sheet1")
ws, err := file.workSheetReader(sheetName)
assert.NoError(t, err)
for colIdx, expected := range []int{grayStyleID, grayStyleID, grayStyleID, blueStyleID, blueStyleID} {
assert.Equal(t, expected, ws.SheetData.Row[0].C[colIdx].S)
}
for colIdx, expected := range []int{grayStyleID, 0, blueStyleID, grayStyleID, blueStyleID} {
assert.Equal(t, expected, ws.SheetData.Row[1].C[colIdx].S)
}
}
func TestStreamSetCellValFunc(t *testing.T) {