美文网首页
Golang使用CSV读取、导出文件

Golang使用CSV读取、导出文件

作者: 懒人程序猿 | 来源:发表于2020-03-25 15:33 被阅读0次

    导出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

    相关文章

      网友评论

          本文标题:Golang使用CSV读取、导出文件

          本文链接:https://www.haomeiwen.com/subject/vvxxuhtx.html