summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtem Kustikov <artem.kustikov@gmail.com>2020-12-12 11:17:00 +0300
committerGitHub <noreply@github.com>2020-12-12 16:17:00 +0800
commit61057c58d34c78232ad0a5c1702ea9fa25a7641a (patch)
treea7a50ca2707a9b5a0ea877d08d4e7c37198a7670
parent95d8920c8e99684eb4e5068e38d3e7e5d0409d4e (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--.gitignore4
-rw-r--r--cell.go7
-rw-r--r--cell_test.go18
3 files changed, 25 insertions, 4 deletions
diff --git a/.gitignore b/.gitignore
index 685d2bf..ce92812 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/cell.go b/cell.go
index 1edfd24..22adefd 100644
--- a/cell.go
+++ b/cell.go
@@ -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)
}