diff options
author | Artem Kustikov <artem.kustikov@gmail.com> | 2020-12-12 11:17:00 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-12 16:17:00 +0800 |
commit | 61057c58d34c78232ad0a5c1702ea9fa25a7641a (patch) | |
tree | a7a50ca2707a9b5a0ea877d08d4e7c37198a7670 | |
parent | 95d8920c8e99684eb4e5068e38d3e7e5d0409d4e (diff) |
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
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | cell.go | 7 | ||||
-rw-r--r-- | cell_test.go | 18 |
3 files changed, 25 insertions, 4 deletions
@@ -1,6 +1,10 @@ ~$*.xlsx test/Test*.xlsx test/Test*.xlsm +# generated files +test/BadEncrypt.xlsx +test/BadWorkbook.SaveAsEmptyStruct.xlsx +test/*.png *.out *.test .idea @@ -762,10 +762,15 @@ func (f *File) formattedValue(s int, v string) string { return v } styleSheet := f.stylesReader() + if s >= len(styleSheet.CellXfs.Xf) { 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] if ok != nil { return ok(v, builtInNumFmt[numFmtID]) diff --git a/cell_test.go b/cell_test.go index c934876..8d3f774 100644 --- a/cell_test.go +++ b/cell_test.go @@ -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"`) } -func TestFormattedValue(t *testing.T) { +func TestFormattedValue2(t *testing.T) { f := NewFile() v := f.formattedValue(0, "43528") assert.Equal(t, "43528", v) @@ -320,12 +320,24 @@ func TestFormattedValue(t *testing.T) { assert.Equal(t, "03/04/2019", v) // formatted value with no built-in number format ID - assert.NoError(t, err) - f.Styles.NumFmts = nil numFmtID := 5 f.Styles.CellXfs.Xf = append(f.Styles.CellXfs.Xf, xlsxXf{ 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") assert.Equal(t, "43528", v) } |