summaryrefslogtreecommitdiff
path: root/cell.go
diff options
context:
space:
mode:
authorArtem Kustikov <artem.kustikov@gmail.com>2020-10-04 16:07:39 +0300
committerGitHub <noreply@github.com>2020-10-04 21:07:39 +0800
commitf2b8798a34aab4411a50861a4cdf47203edc3a19 (patch)
tree356fa1ee9d5a1324fdc0cb2111cfdd1b265ed82b /cell.go
parent9055a835a8c77b757e14cde22cc9daa3f9f0c66c (diff)
extend cell value load to support custom datetime format (#703)
* extend cell value load to support custom datetime format * cleanup incorrect imports * fix numeric values conversion as done in legacy Excel * fix tests coverage * revert temporary package name fix * remove personal info from test XLSX files * remove unused dependencies * update format conversion in parseTime * new UT to increase code coverage * Resolve code review issue for PR #703 * Rename broken file name generated by unit test Co-authored-by: xuri <xuri.me@gmail.com>
Diffstat (limited to 'cell.go')
-rw-r--r--cell.go18
1 files changed, 16 insertions, 2 deletions
diff --git a/cell.go b/cell.go
index 5fe2157..11c6836 100644
--- a/cell.go
+++ b/cell.go
@@ -762,9 +762,23 @@ func (f *File) formattedValue(s int, v string) string {
return v
}
styleSheet := f.stylesReader()
- ok := builtInNumFmtFunc[*styleSheet.CellXfs.Xf[s].NumFmtID]
+ if s >= len(styleSheet.CellXfs.Xf) {
+ return v
+ }
+ numFmtId := *styleSheet.CellXfs.Xf[s].NumFmtID
+ ok := builtInNumFmtFunc[numFmtId]
if ok != nil {
- return ok(*styleSheet.CellXfs.Xf[s].NumFmtID, v)
+ return ok(v, builtInNumFmt[numFmtId])
+ }
+ for _, xlsxFmt := range styleSheet.NumFmts.NumFmt {
+ if xlsxFmt.NumFmtID == numFmtId {
+ format := strings.ToLower(xlsxFmt.FormatCode)
+ if strings.Contains(format, "y") || strings.Contains(format, "m") || strings.Contains(format, "d") || strings.Contains(format, "h") {
+ return parseTime(v, format)
+ }
+
+ return v
+ }
}
return v
}