未验证 提交 61057c58 编写于 作者: A Artem Kustikov 提交者: GitHub

Number format read fix (#741)

* fix UT-generated file names to be ignored
* fix cell value load with invalid number format ID
* fix PR issues
上级 95d8920c
~$*.xlsx ~$*.xlsx
test/Test*.xlsx test/Test*.xlsx
test/Test*.xlsm test/Test*.xlsm
# generated files
test/BadEncrypt.xlsx
test/BadWorkbook.SaveAsEmptyStruct.xlsx
test/*.png
*.out *.out
*.test *.test
.idea .idea
...@@ -762,10 +762,15 @@ func (f *File) formattedValue(s int, v string) string { ...@@ -762,10 +762,15 @@ func (f *File) formattedValue(s int, v string) string {
return v return v
} }
styleSheet := f.stylesReader() styleSheet := f.stylesReader()
if s >= len(styleSheet.CellXfs.Xf) { if s >= len(styleSheet.CellXfs.Xf) {
return v return v
} }
numFmtID := *styleSheet.CellXfs.Xf[s].NumFmtID var numFmtID int
if styleSheet.CellXfs.Xf[s].NumFmtID != nil {
numFmtID = *styleSheet.CellXfs.Xf[s].NumFmtID
}
ok := builtInNumFmtFunc[numFmtID] ok := builtInNumFmtFunc[numFmtID]
if ok != nil { if ok != nil {
return ok(v, builtInNumFmt[numFmtID]) return ok(v, builtInNumFmt[numFmtID])
......
...@@ -301,7 +301,7 @@ func TestSetCellRichText(t *testing.T) { ...@@ -301,7 +301,7 @@ func TestSetCellRichText(t *testing.T) {
assert.EqualError(t, f.SetCellRichText("Sheet1", "A", richTextRun), `cannot convert cell "A" to coordinates: invalid cell name "A"`) assert.EqualError(t, f.SetCellRichText("Sheet1", "A", richTextRun), `cannot convert cell "A" to coordinates: invalid cell name "A"`)
} }
func TestFormattedValue(t *testing.T) { func TestFormattedValue2(t *testing.T) {
f := NewFile() f := NewFile()
v := f.formattedValue(0, "43528") v := f.formattedValue(0, "43528")
assert.Equal(t, "43528", v) assert.Equal(t, "43528", v)
...@@ -320,12 +320,24 @@ func TestFormattedValue(t *testing.T) { ...@@ -320,12 +320,24 @@ func TestFormattedValue(t *testing.T) {
assert.Equal(t, "03/04/2019", v) assert.Equal(t, "03/04/2019", v)
// formatted value with no built-in number format ID // formatted value with no built-in number format ID
assert.NoError(t, err)
f.Styles.NumFmts = nil
numFmtID := 5 numFmtID := 5
f.Styles.CellXfs.Xf = append(f.Styles.CellXfs.Xf, xlsxXf{ f.Styles.CellXfs.Xf = append(f.Styles.CellXfs.Xf, xlsxXf{
NumFmtID: &numFmtID, NumFmtID: &numFmtID,
}) })
v = f.formattedValue(2, "43528")
assert.Equal(t, "43528", v)
// formatted value with invalid number format ID
f.Styles.CellXfs.Xf = append(f.Styles.CellXfs.Xf, xlsxXf{
NumFmtID: nil,
})
v = f.formattedValue(3, "43528")
// formatted value with empty number format
f.Styles.NumFmts = nil
f.Styles.CellXfs.Xf = append(f.Styles.CellXfs.Xf, xlsxXf{
NumFmtID: &numFmtID,
})
v = f.formattedValue(1, "43528") v = f.formattedValue(1, "43528")
assert.Equal(t, "43528", v) assert.Equal(t, "43528", v)
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册