golang操作csv文件


golang操作csv文件

文章插图
 
日常中经常需要使用 golang 读写 csv 文件,比如将数据库中的数据按照要求导出到 csv 中,读取 csv 文件中的数据到内存中进行处理等操作 。
ps: 如果是 Excel 文件(*.xlsm、.xls、.xlt 等格式结尾),需要将其另存为 .csv 格式的文件,才能操作 。
package mainimport ( "bufio" "encoding/csv" "fmt" "io" "os")var fileName = "./test.csv"func main() { writeFile() readFile()}func writeFile() { file, err := os.OpenFile(fileName, os.O_CREATE|os.O_RDWR, 0644) if err != nil {fmt.Println("open file is failed, err: ", err) } defer file.Close() // 写入UTF-8 BOM,防止中文乱码 file.WriteString("\xEF\xBB\xBF") w := csv.NewWriter(file) w.Write([]string{"开发者名称", "开发者邮箱", "应用名称"}) w.Write([]string{"Ann", "Ann@126.com", "开心消消乐"}) w.Write([]string{"Jony", "Jony@126.com", "微信"}) // 写文件需要flush,不然缓存满了,后面的就写不进去了,只会写一部分 w.Flush()}func readFile() { // 必须关闭文件后重新打开,才会读出刚才写入的数据 file, err := os.OpenFile(fileName, os.O_CREATE|os.O_RDWR, 0644) if err != nil {fmt.Println("open file is failed, err: ", err) } defer file.Close() r := bufio.NewReader(file) for {b, err := r.ReadBytes('n')// 会把一行中最后的 n 也读取出来,可以使用 TrimSpace 清空 n// b = bytes.TrimSpace(b)// b, err := buf.ReadString('n')if err != nil {if err == io.EOF {break}fmt.Println("err = ", err)return}fmt.Println(string(b)) }}
golang操作csv文件

文章插图
 
运行结果
golang操作csv文件

文章插图
 

【golang操作csv文件】


    推荐阅读