golang csv文件操作

一、写csv文件

函数:

func NewWriter(w io.Writer) *Writer

func (w *Writer) Flush()

func (w *Writer) Write(record []string) (err os.Error)

func (w *Writer) WriteAll(records [][]string) (err os.Error)

demo

package main

import (
    "bytes"
    "encoding/csv"
    "fmt"
    "os"
)

func main() {
    fileName := "2.csv"
    buf := new(bytes.Buffer)
    r2 := csv.NewWriter(buf)
    for i := 0; i < 10; i++ {
        s := make([]string, 3)
        s[0] = "user id"
        s[1] = "name"
        s[2] = "depart"
        r2.Write(s)
        r2.Flush()
    }
    fmt.Println(buf)
    fout, err := os.Create(fileName)
    defer fout.Close()
    if err != nil {
        fmt.Println(fileName, err)
        return
    }
    fout.WriteString(buf.String())
}

二、读csv文件

函数:

func NewReader(r io.Reader) *Reader

func (r *Reader) Read() (record []string, err os.Error)

func (r *Reader) ReadAll() (records [][]string, err os.Error)

demo

package main

import (
    "encoding/csv"
    "fmt"
    "io/ioutil"
    "strings"
)

func main() {
    //fileName := "1.csv"
    fmt.Printf("Input file name : ")
    var fileName string
    fmt.Scanf("%s", &fileName)
    cntb, err := ioutil.ReadFile(fileName)
    if err != nil {
        panic(err)
    }
    r2 := csv.NewReader(strings.NewReader(string(cntb)))
    ss, _ := r2.ReadAll()
    //fmt.Println(ss)
    sz := len(ss)
    for i := 0; i < sz; i++ {
        fmt.Println(ss[i])
    }
}