diff options
author | Artem Kustikov <artem.kustikov@gmail.com> | 2020-10-04 16:07:39 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-04 21:07:39 +0800 |
commit | f2b8798a34aab4411a50861a4cdf47203edc3a19 (patch) | |
tree | 356fa1ee9d5a1324fdc0cb2111cfdd1b265ed82b /cell.go | |
parent | 9055a835a8c77b757e14cde22cc9daa3f9f0c66c (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.go | 18 |
1 files changed, 16 insertions, 2 deletions
@@ -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 } |