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)