分享
Golang使用CSV读取、导出文件
是个懒人 · · 20373 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
导出csv文件
func WriteCsv() {
//创建文件
f, err := os.Create("test.csv")
if err != nil {
panic(err)
}
defer f.Close()
// 写入UTF-8 BOM
f.WriteString("\xEF\xBB\xBF")
//创建一个新的写入文件流
w := csv.NewWriter(f)
data := [][]string{
{"1", "刘备", "23"},
{"2", "张飞", "23"},
{"3", "关羽", "23"},
{"4", "赵云", "23"},
{"5", "黄忠", "23"},
{"6", "马超", "23"},
}
//写入数据
w.WriteAll(data)
w.Flush()
}
image.png
读取csv
func ReadCsv() {
//准备读取文件
fileName := "test.csv"
fs, err := os.Open(fileName)
if err != nil {
log.Fatalf("can not open the file, err is %+v", err)
}
defer fs.Close()
r := csv.NewReader(fs)
//针对大文件,一行一行的读取文件
for {
row, err := r.Read()
if err != nil && err != io.EOF {
log.Fatalf("can not read, err is %+v", err)
}
if err == io.EOF {
break
}
fmt.Println(row)
}
fmt.Println("\n---------------------------\n")
// 针对小文件,也可以一次性读取所有的文件。注意,r要重新赋值,因为readall是读取剩下的
fs1, _ := os.Open(fileName)
r1 := csv.NewReader(fs1)
content, err := r1.ReadAll()
if err != nil {
log.Fatalf("can not readall, err is %+v", err)
}
for _, row := range content {
fmt.Println(row)
}
}
image.png
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信20373 次点击 ∙ 1 赞
上一篇:2020年程序员生存指南
下一篇:并发简介
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
导出csv文件
func WriteCsv() {
//创建文件
f, err := os.Create("test.csv")
if err != nil {
panic(err)
}
defer f.Close()
// 写入UTF-8 BOM
f.WriteString("\xEF\xBB\xBF")
//创建一个新的写入文件流
w := csv.NewWriter(f)
data := [][]string{
{"1", "刘备", "23"},
{"2", "张飞", "23"},
{"3", "关羽", "23"},
{"4", "赵云", "23"},
{"5", "黄忠", "23"},
{"6", "马超", "23"},
}
//写入数据
w.WriteAll(data)
w.Flush()
}
image.png
读取csv
func ReadCsv() {
//准备读取文件
fileName := "test.csv"
fs, err := os.Open(fileName)
if err != nil {
log.Fatalf("can not open the file, err is %+v", err)
}
defer fs.Close()
r := csv.NewReader(fs)
//针对大文件,一行一行的读取文件
for {
row, err := r.Read()
if err != nil && err != io.EOF {
log.Fatalf("can not read, err is %+v", err)
}
if err == io.EOF {
break
}
fmt.Println(row)
}
fmt.Println("\n---------------------------\n")
// 针对小文件,也可以一次性读取所有的文件。注意,r要重新赋值,因为readall是读取剩下的
fs1, _ := os.Open(fileName)
r1 := csv.NewReader(fs1)
content, err := r1.ReadAll()
if err != nil {
log.Fatalf("can not readall, err is %+v", err)
}
for _, row := range content {
fmt.Println(row)
}
}
image.png