亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Golang 中導出為 CSV 時保留字符串的前導零

在 Golang 中導出為 CSV 時保留字符串的前導零

Go
烙印99 2022-12-19 10:59:02
我有一個使用 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())}
查看完整描述

2 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

經過幾次嘗試,我找到了在 golang 中有效的解決方案,感謝@Steffen Ullrich 提供的鏈接。類似于在 VB 中的工作,而不是兩邊的兩個引號,一個應該足夠了:

row = append(row, "=\""+e. userCode +"\"")

將包含 CSV 文件中的所有前導零:

000001, 010101, 000000


查看完整回答
反對 回復 2022-12-19
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

我測試了你的代碼,結果在 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)

}

結果:http://img1.sycdn.imooc.com//639fd39d0001e1f702560180.jpg

查看完整回答
反對 回復 2022-12-19
  • 2 回答
  • 0 關注
  • 270 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號