csvdata -- Reading CSV Data
This package is required Go 1.25 or later.
- Provide a simple and stable interface for reading CSV-like rows.
- Keep parsing concerns separated by format adapters (
exceldata,calcdata). - Return explicit errors with context, and avoid hidden side effects.
Primary command:
task test
Equivalent direct commands:
go mod verify
go test -shuffle on ./...
golangci-lint-v2 run --enable gosec --timeout 3m0s ./...
task govulncheck
task graph
CI: lint, tests, and vulnerability checks.CodeQL: security analysis.
All workflows are available in GitHub Actions for this repository.
import "github.com/goark/csvdata"package csvdata_test
import (
"fmt"
"github.com/goark/csvdata"
)
func ExampleNew() {
file, err := csvdata.OpenFile("testdata/sample.csv")
if err != nil {
fmt.Println(err)
return
}
rc := csvdata.NewRows(csvdata.New(file), true)
defer rc.Close()
if err := rc.Next(); err != nil {
fmt.Println(err)
return
}
fmt.Println(rc.Column("name"))
// Output:
// Mercury
}package exceldata_test
import (
"fmt"
"github.com/goark/csvdata"
"github.com/goark/csvdata/exceldata"
)
func ExampleNew() {
xlsx, err := exceldata.OpenFile("testdata/sample.xlsx", "")
if err != nil {
fmt.Println(err)
return
}
r, err := exceldata.New(xlsx, "")
if err != nil {
fmt.Println(err)
return
}
rc := csvdata.NewRows(r, true)
defer rc.Close() //dummy
if err := rc.Next(); err != nil {
fmt.Println(err)
return
}
fmt.Println(rc.Column("name"))
// Output:
// Mercury
}package calcdata_test
import (
"fmt"
"github.com/goark/csvdata"
"github.com/goark/csvdata/calcdata"
)
func ExampleNew() {
ods, err := calcdata.OpenFile("testdata/sample.ods")
if err != nil {
fmt.Println(err)
return
}
r, err := calcdata.New(ods, "")
if err != nil {
fmt.Println(err)
return
}
rc := csvdata.NewRows(r, true)
defer rc.Close() //dummy
if err := rc.Next(); err != nil {
fmt.Println(err)
return
}
fmt.Println(rc.Column("name"))
// Output:
// Mercury
}