Go 写出 CSV 文件

原文转载自 「利强的博客」 ( https://liqiang.io/post/394307ea ) By Liqiang Lau (liqiang

预计阅读时间 0 分钟(共 0 个字, 0 张图片, 0 个链接)

0. 概述

在平时工作中,我们总是少不了导出一些数据,无论是业务数据还是进程内部数据都有可能,而作为兼容 Excel 的 CSV 文件,是我们喜欢的一种方式,本文就介绍一下如何用 Go 操作 CSV。

1. 创建 go 文件

[root@liqiang.io]# cat csv.go
package main

import (
    "encoding/csv"
    "log"
    "os"
)

2. 创建写出数据

[root@liqiang.io]# cat csv.go
empData := [][]string{
    {"Name", "City", "Skills"},
    {"Smith", "Newyork", "Java"},
    {"William", "Paris", "Golang"},
    {"Rose", "London", "PHP"},
}

3. 创建 CSV 文件

[root@liqiang.io]# cat csv.go
csvFile, err := os.Create("employee.csv")

if err != nil {
    log.Fatalf("failed creating file: %s", err)
}
csvFile.Close()

4. 写出数据

[root@liqiang.io]# cat csv.go
csvwriter := csv.NewWriter(csvFile)

for _, empRow := range empData {
    _ = csvwriter.Write(empRow)
}

csvwriter.Flush()

5. 整体代码

[root@liqiang.io]# cat csv.go
package main

import (
    "encoding/csv"
    "os"
)

func main() {
    csvFile, _ := os.Create("employee.csv")
    defer csvFile.Close()

    csvFile.WriteString("\xEF\xBB\xBF") // 写入UTF-8 BOM
    csvwriter := csv.NewWriter(csvFile)
    for _, empRow := range empData {
        _ = csvwriter.Write(empRow)
    }
    csvwriter.Flush()
}

6. Ref

more_vert