golang 导出csv文件

import (
    "encoding/csv"
    "fmt"

    //"io/ioutil"

    //"os"
    "bytes"
    "strconv"
    "strings"
    "time"

 

)

 

 

//创建CSV
            timeUnix := time.Now().Unix()
            filename := "exportcsv" + strconv.FormatInt(timeUnix, 10) + ".csv"
            // 写数据到csv文件
            b := &bytes.Buffer{}
            // wr := csv.NewWriter(b)
            w := csv.NewWriter(b)
            // defer func() {
            //     newFile.Close()
            // }()

            header := []string{"序号", "识别照片", "底片", "姓名", "通行位置", "标志", "项目名称", "时间"} //标题
            // w.Write(header)
            data := [][]string{
                header,
            }
            var i int = 1
            for _, v := range results {
                if v.Flag == "in" {
                    v.Flag = "进"
                } else {
                    v.Flag = "出"
                }
                context := []string{
                    strconv.Itoa(i),
                    v.ImageURL,
                    v.ImgURL,
                    v.UserName,
                    v.PositionName,
                    v.Flag,
                    v.ProjectName,
                    v.Pubtime.Format("2006-01-02 15:04:05")}
                data = append(data, context)
                i++
            }
            // WriteAll方法使用Write方法向w写入多条记录,并在最后调用Flush方法清空缓存。
            w.WriteAll(data)
            w.Flush()
            gatec.Ctx.Output.Header("Content-Type", "application/csv")
            gatec.Ctx.Output.Header("Content-Disposition", fmt.Sprintf("attachment;filename=%s", filename))
            tet := b.String()
            gatec.Ctx.WriteString("\xEF\xBB\xBF") // 写入UTF-8 BOM,防止中文乱码
            gatec.Ctx.WriteString(tet)

你可能感兴趣的:(go)