关于golang:golang-读取excelxlsx文件-时间格式解析

问题起源

最近在写一个读取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"))
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理