

Golang导出CSV数据并解决数据乱码问题
source link: https://studygolang.com/articles/32341
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在日常开发中,针对数据导出,我们可以导出Excel格式,但是如果是针对大数据量的导出,直接导出为Excel格式可能需要占用大量内存,且导出速度很慢。这个时候我们就需要导出为CSV格式。
CSV 格式
CSV本质上是文本文件,该文件有以下要求:
- 列之间用逗号分隔,行之间用换行分隔
- 单元格如果有逗号、引号之类的字符,该单元格需要使用双引号括起来
- 如果内容包含中文,直接输出可能会乱码
实现方式
golang 官方有csv的库,可以很容易的实现csv数据的写入。
golang实现csv数据写文件
func main() { f, err := os.Create("data.csv") if err != nil { panic(err) } defer f.Close() f.WriteString("xEFxBBxBF") // 写入UTF-8 BOM,避免使用Microsoft Excel打开乱码 writer := csv.NewWriter(f) writer.Write([]string{"编号", "姓名", "年龄"}) writer.Write([]string{"1", "张三", "23"}) writer.Write([]string{"2", "李四", "24"}) writer.Write([]string{"3", "王五", "25"}) writer.Write([]string{"4", "赵六", "26"}) writer.Flush() // 此时才会将缓冲区数据写入 }
golang实现web导出csv数据
此处以gin框架为例,如果用的go官方web库,其实差不多是一样的:
func ExportCsv(c *gin.Context) { bytesBuffer := &bytes.Buffer{} bytesBuffer.WriteString("xEFxBBxBF") // 写入UTF-8 BOM,避免使用Microsoft Excel打开乱码 writer := csv.NewWriter(bytesBuffer) writer.Write([]string{"编号", "姓名", "年龄"}) writer.Write([]string{"1", "张三", "23"}) writer.Write([]string{"2", "李四", "24"}) writer.Write([]string{"3", "王五", "25"}) writer.Write([]string{"4", "赵六", "26"}) writer.Flush() // 此时才会将缓冲区数据写入 // 设置下载的文件名 c.Writer.Header().Set("Content-Disposition", "attachment;filename=data.csv") // 设置文件类型以及输出数据 c.Data(http.StatusOK, "text/csv", bytesBuffer.Bytes()) return }
有疑问加站长微信联系(非本文作者)

Recommend
-
10
解决python3往csv写入汉字变为乱码 作者: xusx 分类: Python 发布时间: 2020-07-27 1...
-
15
Tip: 解决blender中文乱码问题康托耶夫虚拟现实从业/还是搞搞游戏的我是康托
-
8
excel打开csv文件乱码的解决方法 浏览:883次 出处信息 通过程序导出生成txt...
-
12
Mysql数据库解决中文乱码问题【不修改my.ini配置文件】
-
5
Docker Mysql DB 初始化 UTF8 乱码问题的解决 最近在补单元测试,需要 mock 一个 DB,初始化 dump 数据阶段需要 dump 一些带中文的数据,但是发现跑起来都是乱码,非...
-
11
在 Golang 中导出一个 excel 可识别的 csv 好久没有更新博客了,稍微写个几行吧……不然都快不会写东西了 emmm。众所周知,导出表格是中后台一个非常普遍的需求,而 Golang 官方...
-
4
炎忍的博客解决 VS Code 编译 C/C++ 是输出中文乱码的问题发表于2020-04-08|更新于2020-12-14|技术记录
-
12
golang 解决下载文件名乱码 Safari浏览器下载文件名乱码 eflight · 大约4小时之前 · 44 次点击 ·...
-
9
Vue-Highcharts 提供导出 CSV 数据选项 作者:
-
9
解决使用 mPDF 导出 PDF 时中文及符号乱码问题 后端开发 · 实用资源 / ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK