在 Golang 中导出为 CSV 时保留字符串的前导零

我有一个使用 Gin 框架的 Go 应用程序,它将结构导出到 CSV。一列userCode要求导出的字段保留字符串的所有前导零。


例如,对于 , , 等字符串000001,010101CSV000000中导出的字段应该具有完全相似的值。但是,如果我直接将字符串附加到行并写入缓冲区,导出的字段将发出所有前导零并且值变为:1,,,我做了一些挖掘10101, 看来这个问题可以通过设置列类型来解决在读取 csv 文件时在 Excel 中,但我想知道这是否可以在 Go 程序中解决?谢谢!


我的CSV导出相关功能:


func (h *HandleManager) ExportUsers() gin.HandlerFunc {


        var buf bytes.Buffer

        writer := csv.NewWriter(&buf)

        var cols = []string{"User Name", ..., ....}

        writer.Write(cols)

        for _, e := range users {

            var row []string

            // ....

            row = append(row, e.userCode) // type: string

            if err := writer.Write(row); err != nil {

                log.Errorff(h.logCtx, "ExportUsers|WriteToCSV|err:%v", err)

                c.AbortWithStatus(http.StatusInternalServerError)

                return

            }

        }

        writer.Flush()

        c.Writer.Header().Set("Content-Type", "text/csv")

        c.Writer.Header().Set("Content-Disposition", "attachment;filename="+csvFileName+".csv")

        c.Writer.Write(buf.Bytes())

}


烙印99
浏览 196回答 2
2回答

收到一只叮咚

经过几次尝试,我找到了在 golang 中有效的解决方案,感谢@Steffen Ullrich 提供的链接。类似于在 VB 中的工作,而不是两边的两个引号,一个应该足够了:row = append(row, "=\""+e. userCode +"\"")将包含 CSV 文件中的所有前导零:000001, 010101, 000000

MMTTMM

我测试了你的代码,结果在 excel 中会丢失零,但在 txt 阅读器中不会;代码:func main() { type user struct { Name string Code string } http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {     var buf bytes.Buffer     writer := csv.NewWriter(&buf)     var cols = []string{"Name", "Code"}     writer.Write(cols)     users := []user{{Name: "Tome", Code: "001"}, {Name: "James", Code: "000"}}     for _, e := range users {         err := writer.Write([]string{e.Name, e.Code})         if err != nil {             log.Fatalln(err)         }     }     writer.Flush()     w.Header().Set("Content-Type", "text/csv")     w.Header().Set("Content-Disposition", "attachment;filename="+"test.csv")     w.Write(buf.Bytes()) }) http.ListenAndServe(":8080", nil)}结果:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go