问题起源
最近在写一个读取xlsx文件,并解析其中数据的我的项目,在所有的数据都就绪之后,却遇到了工夫格局获取不正确的问题
工夫格局
我查问到的后果
我的代码
func main() { f, err := excelize.OpenFile("./template.xlsx") if err != nil { log.Fatal(err) } rows := f.GetRows("Sheet1") for _, row := range rows { fmt.Println("row[1]: ", row[1]) }}
第一次尝试问题解决
通过查找官网issue,我失去了另一个后果,能够应用number_format办法,转化格局
由此,我失去了另一个后果,43831
func main() { f, err := excelize.OpenFile("/Users/zheng/Desktop/template.xlsx") if err != nil { log.Fatal(err) } style, err := f.NewStyle(`{"number_format": 0}`) if err != nil { fmt.Println(err) } f.SetCellStyle("Sheet1", "B2", "B2", style) rows := f.GetRows("Sheet1") for _, row := range rows { fmt.Println("row[1]: ", row[1]) }}
第二次尝试解决问题
我发现,这个数字43831,是间隔1990-00-01的天数,这就是所谓的excel工夫,从而我失去了我想要的答案
func excelDateToDate(excelDate string) time.Time { excelTime := time.Date(1899, time.December, 30, 0, 0, 0, 0, time.UTC) var days, _ = strconv.Atoi(excelDate) return excelTime.Add(time.Second * time.Duration(days*86400))}func main() { f, err := excelize.OpenFile("/Users/zheng/Desktop/template.xlsx") if err != nil { log.Fatal(err) } style, err := f.NewStyle(`{"number_format": 0}`) if err != nil { fmt.Println(err) } f.SetCellStyle("Sheet1", "B2", "B2", style) rows := f.GetRows("Sheet1") for _, row := range rows { fmt.Println("row[1]: ", row[1]) } fmt.Println(excelDateToDate("43831"))}