Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/artonge/Go-csv-tag
Read csv file from go using tags
https://github.com/artonge/Go-csv-tag
csv go hacktoberfest tags
Last synced: 20 days ago
JSON representation
Read csv file from go using tags
- Host: GitHub
- URL: https://github.com/artonge/Go-csv-tag
- Owner: artonge
- License: gpl-3.0
- Created: 2017-06-18T15:31:16.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-05-23T08:21:15.000Z (6 months ago)
- Last Synced: 2024-07-31T01:24:51.708Z (4 months ago)
- Topics: csv, go, hacktoberfest, tags
- Language: Go
- Homepage:
- Size: 63.5 KB
- Stars: 119
- Watchers: 3
- Forks: 32
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
Awesome Lists containing this project
README
# go-csv-tag
Read csv file from Go using tags
[![godoc for artonge/go-csv-tag](https://godoc.org/github.com/artonge/go-csv-tag?status.svg)](http://godoc.org/github.com/artonge/go-csv-tag)
![Go](https://github.com/artonge/go-csv-tag/workflows/Go/badge.svg)
[![goreportcard for artonge/go-csv-tag](https://goreportcard.com/badge/github.com/artonge/go-csv-tag)](https://goreportcard.com/report/artonge/go-csv-tag)[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
**The project is in maintenance mode.**
It is kept compatible with changes in the Go ecosystem but no new features will be developed. PR could be accepted.
# Install
`go get github.com/artonge/go-csv-tag/v2`
# Example
## Load
The csv file:
```csv
name, ID, number
name1, 1, 1.2
name2, 2, 2.3
name3, 3, 3.4
```Your Go code:
```go
type Demo struct { // A structure with tags
Name string `csv:"name"`
ID int `csv:"ID"`
Num float64 `csv:"number"`
}tab := []Demo{} // Create the slice where to put the content
err := csvtag.LoadFromPath(
"file.csv", // Path of the csv file
&tab, // A pointer to the create slice
csvtag.CsvOptions{ // Load your csv with optional options
Separator: ';', // changes the values separator, default to ','
Header: []string{"name", "ID", "number"}, // specify custom headers
TagKey: "csv", // specify a custom tag key, default to 'csv'
})
```You can also load the data from an io.Reader with:
```go
csvtag.LoadFromReader(youReader, &tab)
```Or from a string with:
```go
csvtag.LoadFromString(yourString, &tab)
```## Dump
Your Go code:
```go
type Demo struct { // A structure with tags
Name string `csv:"name"`
ID int `csv:"ID"`
Num float64 `csv:"number"`
}tab := []Demo{ // Create the slice where to put the content
Demo{
Name: "some name",
ID: 1,
Num: 42.5,
},
}err := csvtag.DumpToFile(tab, "csv_file_name.csv")
```You can also dump the data into an io.Writer with:
```go
err := csvtag.DumpToWriter(tab, yourIOWriter)
```Or dump to a string with:
```go
str, err := csvtag.DumpToString(tab)
```The csv file written:
```csv
name,ID,number
some name,1,42.5
```