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
}
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

View File

@ -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)