首页 > 其他分享 >golang如何导出csv格式的文件

golang如何导出csv格式的文件

时间:2022-11-22 12:04:26浏览次数:33  
标签:users 导出 append golang User csv string user


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
}


标签:users,导出,append,golang,User,csv,string,user
From: https://blog.51cto.com/u_11553781/5877568

相关文章

  • vue 项目中,后端返回文件流,导出excel
    之前写过文件流导出excel,这次直接把上次的代码拿过来复制粘贴,但是导出的表格里面没有数据,只显示undefined。这是之前的代码//api接口页面//excel导出接口export......
  • golang算法-链表逆序
    前言链表逆序,表述的场景为:A->B->C->D逆序后:D->C>B>A分析需要插入数据,Insert方法需要打印数据,Print方法插入数据时,需要定位最后一个节点,LastNode方法最少需要两个偏移量......
  • golang算法-判断链表是否有环
    前言链表有环,体现为:A->B->C->D->B…分析需要将遍历过的节点存入map,以址为key,空struct为值遍历时,当前节点是否已存在,存在即有环。实现链表//链表的长度,不包过头typeNode......
  • Golang常用的工具函数,无依赖,常更
    util.go//Executef()ntimesonfailfuncRetryHandler(nint,ffunc()(bool,error))error{ok,er:=f()ifok&&er==nil{returnnil}ifn-1>0......
  • golang实现限制每秒多少次的限频操作
    前言一些函数的执行可能会限制频率,比如某个api接口要求每秒最大请求30次。下面记录了自己写的限频和官方的限频代码//加锁限频,输出次数大概率小于最大值funcExecLimit(las......
  • Golang学习日志 ━━ 理解依赖包的管理(mod/非mod)和加载方式(项目路径、相对路径、绝对
    go有很多种方法调用依赖包,mod又加入了对包的版本管理。方式太多不免有令人迷惑和混乱的地方,希望本文能帮助大家了解目前使用规则一、mod/非mod管理方式go提供了两种项目......
  • EsayExcel导出合并单元格(工具类)
    导出合并单元格工具类1.main方法调用publicstaticvoidmain(String[]args){List<GroupExport<ScoreDemo,String>>groupExports=newArrayList<>()......
  • CentOS6.4安装Golang环境
    什么是Go?  Go是一门并发支持、垃圾回收的编译型的系统编程语言,目的是为了创造一门具有在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡点的一门编程语言。......
  • 55.数据导出到csv文件
    ##导出到csv文件importpandasaspddf=pd.DataFrame({'编号':['1001','1002','1003'],'姓名':['张三','李四','王五'],'总成绩':[740,658,543]......
  • 使用easy excel进行简单的导入导出表格
    1.创建项目,导入easyexcel的依赖<!--easyexcel依赖--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3......