golang如何导出csv格式的文件

import(
    "fmt"
    "github.com/xormplus/xorm"
    "golang.org/x/text/transform"
    "golang.org/x/text/encoding/simplifiedchinese"
    "io/ioutil"
    "github.com/gin-gonic/gin"
    "bytes"
    "encoding/csv"
    "strings"
    _ "github.com/lib/pq"
    "strconv"
    )
...
type User struct{
Name string
Provice string
City string
Address string
TDate string
Phone string
Status int
}
func GetData(c *gin.Context) {
    fileName := "test.csv"
    //users, err := GetUserByDate("2018/4/3", "2018/4/3")
    users = make([]User,0,10)
    users = append(users,User{"ft", "jiangxi", "nanchang", "xx", time.Now(), "110", 1})
    users = append(users,User{"ft2", "jiangxi", "nanchang", "xx", time.Now(), "111", 1})
    users = append(users,User{"ft3", "jiangxi", "nanchang", "xx", time.Now(), "111", 1})
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(users)
    usersStrArray :=structs2StringArr(users)
    categoryHeader := []string{"姓名","省份","城市","详细地址","填写日期","联系方式","是否联系"}
    b := &bytes.Buffer{}
    wr := csv.NewWriter(b)
    wr.Write(categoryHeader)  //按行shu
    for i := 0; i < len(usersStrArray); i++ {
        wr.Write(usersStrArray[i])
    }
    wr.Flush()
    c.Writer.Header().Set("Content-Type", "text/csv")
    c.Writer.Header().Set("Content-Disposition", fmt.Sprintf("attachment;filename=%s", fileName))
    //tet, _ := UTF82GBK(b.Bytes())
    tet:=b.String()
    c.String(200, tet)
}
func structs2StringArr(users []User) [][]string{
    var userArr =make([][]string,0)
    var user = User{}
    for i:=0;i<len(users);i++{
        user = users[i]
        userArr = append(userArr,[]string{user.Name,user.Province,user.City,user.Address,user.Tdate,user.Phone,strconv.Itoa(user.Status)})
    }
    return userArr
}

你可能感兴趣的:(go)