12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- // Copyright 2014 Oleku Konko All rights reserved.
- // Use of this source code is governed by a MIT
- // license that can be found in the LICENSE file.
- // This module is a Table Writer API for the Go Programming Language.
- // The protocols were written in pure Go and works on windows and unix systems
- package tablewriter
- import (
- "encoding/csv"
- "io"
- "os"
- )
- // Start A new table by importing from a CSV file
- // Takes io.Writer and csv File name
- func NewCSV(writer io.Writer, fileName string, hasHeader bool) (*Table, error) {
- file, err := os.Open(fileName)
- if err != nil {
- return &Table{}, err
- }
- defer file.Close()
- csvReader := csv.NewReader(file)
- t, err := NewCSVReader(writer, csvReader, hasHeader)
- return t, err
- }
- // Start a New Table Writer with csv.Reader
- // This enables customisation such as reader.Comma = ';'
- // See http://golang.org/src/pkg/encoding/csv/reader.go?s=3213:3671#L94
- func NewCSVReader(writer io.Writer, csvReader *csv.Reader, hasHeader bool) (*Table, error) {
- t := NewWriter(writer)
- if hasHeader {
- // Read the first row
- headers, err := csvReader.Read()
- if err != nil {
- return &Table{}, err
- }
- t.SetHeader(headers)
- }
- for {
- record, err := csvReader.Read()
- if err == io.EOF {
- break
- } else if err != nil {
- return &Table{}, err
- }
- t.Append(record)
- }
- return t, nil
- }
|