This closes #1213, fix get incorrect rich text value caused by missing cell type checking

This commit is contained in:
xuri 2022-04-29 13:53:09 +08:00 committed by GitHub
parent df91b34a3f
commit 0f93bd23c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 4 deletions

View File

@ -764,7 +764,7 @@ func (f *File) GetCellRichText(sheet, cell string) (runs []RichTextRun, err erro
return return
} }
siIdx, err := strconv.Atoi(cellData.V) siIdx, err := strconv.Atoi(cellData.V)
if nil != err { if err != nil || cellData.T != "s" {
return return
} }
sst := f.sharedStringsReader() sst := f.sharedStringsReader()
@ -776,7 +776,7 @@ func (f *File) GetCellRichText(sheet, cell string) (runs []RichTextRun, err erro
run := RichTextRun{ run := RichTextRun{
Text: v.T.Val, Text: v.T.Val,
} }
if nil != v.RPr { if v.RPr != nil {
font := Font{Underline: "none"} font := Font{Underline: "none"}
font.Bold = v.RPr.B != nil font.Bold = v.RPr.B != nil
font.Italic = v.RPr.I != 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.Size = *v.RPr.Sz.Val
} }
font.Strike = v.RPr.Strike != nil 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") font.Color = strings.TrimPrefix(v.RPr.Color.RGB, "FF")
} }
run.Font = &font run.Font = &font

View File

@ -502,8 +502,13 @@ func TestGetCellRichText(t *testing.T) {
}, },
} }
assert.NoError(t, f.SetCellRichText("Sheet1", "A1", runsSource)) 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.NoError(t, err)
assert.Equal(t, runsSource[0].Text, runs[0].Text) assert.Equal(t, runsSource[0].Text, runs[0].Text)