diff options
author | xuri <xuri.me@gmail.com> | 2022-04-29 13:53:09 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-29 13:53:09 +0800 |
commit | 0f93bd23c97ac0f04fe8012bd4a262c851e44a82 (patch) | |
tree | 91df2abef72ff85e34f8001355d7af2c1068dc9e | |
parent | df91b34a3f816a865ba6f9ea7707c668552df9d6 (diff) |
This closes #1213, fix get incorrect rich text value caused by missing cell type checking
-rw-r--r-- | cell.go | 6 | ||||
-rw-r--r-- | cell_test.go | 7 |
2 files changed, 9 insertions, 4 deletions
@@ -764,7 +764,7 @@ func (f *File) GetCellRichText(sheet, cell string) (runs []RichTextRun, err erro return } siIdx, err := strconv.Atoi(cellData.V) - if nil != err { + if err != nil || cellData.T != "s" { return } sst := f.sharedStringsReader() @@ -776,7 +776,7 @@ func (f *File) GetCellRichText(sheet, cell string) (runs []RichTextRun, err erro run := RichTextRun{ Text: v.T.Val, } - if nil != v.RPr { + if v.RPr != nil { font := Font{Underline: "none"} font.Bold = v.RPr.B != nil font.Italic = v.RPr.I != nil @@ -793,7 +793,7 @@ func (f *File) GetCellRichText(sheet, cell string) (runs []RichTextRun, err erro font.Size = *v.RPr.Sz.Val } font.Strike = v.RPr.Strike != nil - if nil != v.RPr.Color { + if v.RPr.Color != nil { font.Color = strings.TrimPrefix(v.RPr.Color.RGB, "FF") } run.Font = &font diff --git a/cell_test.go b/cell_test.go index 73b3018..77179cc 100644 --- a/cell_test.go +++ b/cell_test.go @@ -502,8 +502,13 @@ func TestGetCellRichText(t *testing.T) { }, } assert.NoError(t, f.SetCellRichText("Sheet1", "A1", runsSource)) + assert.NoError(t, f.SetCellValue("Sheet1", "A2", false)) - runs, err := f.GetCellRichText("Sheet1", "A1") + runs, err := f.GetCellRichText("Sheet1", "A2") + assert.NoError(t, err) + assert.Equal(t, []RichTextRun(nil), runs) + + runs, err = f.GetCellRichText("Sheet1", "A1") assert.NoError(t, err) assert.Equal(t, runsSource[0].Text, runs[0].Text) |