From c849b3b45def31edaa2734b2a862adf0f466ae60 Mon Sep 17 00:00:00 2001 From: sergeilem Date: Wed, 6 Mar 2019 23:13:03 +0300 Subject: [PATCH] more date reading enhancements --- col.go | 11 ++++++----- comparexlsxlsx.go | 4 ++-- issue47_test.go | 2 +- testdata/float.xls | Bin 0 -> 5632 bytes testdata/float.xlsx | Bin 0 -> 4487 bytes testdata/times.xls | Bin 0 -> 5632 bytes testdata/times.xlsx | Bin 0 -> 4502 bytes 7 files changed, 9 insertions(+), 8 deletions(-) create mode 100644 testdata/float.xls create mode 100644 testdata/float.xlsx create mode 100644 testdata/times.xls create mode 100644 testdata/times.xlsx diff --git a/col.go b/col.go index 52b412f..e0d73f6 100644 --- a/col.go +++ b/col.go @@ -58,11 +58,12 @@ func (xf *XfRk) String(wb *WorkBook) string { if formatterLower == "general" || strings.Contains(formatter.str, "#") || strings.Contains(formatter.str, ".00") || - strings.Contains(formatterLower, "mm/yy") || - strings.Contains(formatterLower, "dd/yy") || - strings.Contains(formatterLower, "mm.yy") || - strings.Contains(formatterLower, "dd.yy") || - strings.Contains(formatterLower, "дд.гг") { + strings.Contains(formatterLower, "m/y") || + strings.Contains(formatterLower, "d/y") || + strings.Contains(formatterLower, "m.y") || + strings.Contains(formatterLower, "d.y") || + strings.Contains(formatterLower, "h:") || + strings.Contains(formatterLower, "д.г") { //If format contains # or .00 then this is a number return xf.Rk.String() } else { diff --git a/comparexlsxlsx.go b/comparexlsxlsx.go index eab82b2..a161abd 100644 --- a/comparexlsxlsx.go +++ b/comparexlsxlsx.go @@ -8,7 +8,7 @@ import ( ) //Compares xls and xlsx files -func compareXlsXlsx(xlsfilepathname string, xlsxfilepathname string) string { +func CompareXlsXlsx(xlsfilepathname string, xlsxfilepathname string) string { xlsFile, err := Open(xlsfilepathname, "utf-8") if err != nil { return fmt.Sprintf("Cant open xls file: %s", err) @@ -27,8 +27,8 @@ func compareXlsXlsx(xlsfilepathname string, xlsxfilepathname string) string { for row, xlsxRow := range xlsxSheet.Rows { xlsRow := xlsSheet.Row(row) for cell, xlsxCell := range xlsxRow.Cells { - xlsText := xlsRow.Col(cell) xlsxText := xlsxCell.String() + xlsText := xlsRow.Col(cell) if xlsText != xlsxText { //try to convert to numbers xlsFloat, xlsErr := strconv.ParseFloat(xlsText, 64) diff --git a/issue47_test.go b/issue47_test.go index 098604d..1385ad3 100644 --- a/issue47_test.go +++ b/issue47_test.go @@ -18,7 +18,7 @@ func TestIssue47(t *testing.T) { if filepath.Ext(f.Name()) == ".xls" { xlsfilename := f.Name() xlsxfilename := strings.TrimSuffix(xlsfilename, filepath.Ext(xlsfilename)) + ".xlsx" - err := compareXlsXlsx(path.Join(testdatapath, xlsfilename), + err := CompareXlsXlsx(path.Join(testdatapath, xlsfilename), path.Join(testdatapath, xlsxfilename)) if err != "" { t.Fatalf("XLS file %s an XLSX file are not equal: %s", xlsfilename, err) diff --git a/testdata/float.xls b/testdata/float.xls new file mode 100644 index 0000000000000000000000000000000000000000..dbe958565bb44d266ba252c31f250ce5bd029c66 GIT binary patch literal 5632 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 literal 0 HcmV?d00001 diff --git a/testdata/times.xls b/testdata/times.xls new file mode 100644 index 0000000000000000000000000000000000000000..640b74d1ce17d59b72b6b6287ae2ec64a375a36d GIT binary patch literal 5632 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 literal 0 HcmV?d00001