The toolbox

Find the operation by the job.

This is a working map, not a wall of signatures. Use it to choose the next operation, then open the complete Go documentation for exact types and behavior.

Read and write

Read

  • ReadCsv
  • ReadCsvFile
  • ReadCsvFileE
  • ReadCsvFileComma
  • ReadCsvLimit

Write

  • WriteCsvFile
  • WriteCsvFileE
  • WriteCsvFileComma
  • WriteTo
  • SanitizeFormulas

Inspect and walk rows

Headers and cells

  • GetHeaders
  • GetHeader
  • GetHeaderPosition
  • GetCell
  • GetCellByField
  • GetRowAsMap

Data rows

  • GetNumberDataRows
  • GetDataRows
  • EachDataRow
  • Head
  • Tail
  • SliceRows

Filter and transform

Filter and find

  • FilterByField
  • Where
  • WhereFold
  • FilterRows
  • FindInField
  • MatchInField

Cell and column transforms

  • GetColumnByField
  • SetColumnByField
  • MapColumnByField
  • FillColumnByField
  • ReplaceInField
  • TrimSpace

Shape and deduplicate

Shape

  • OnlyThisFields
  • RenameHeader
  • RenameHeaders
  • AddEmptyColumnAt
  • AddColumnByField
  • AddComputedColumn
  • MoveColumn
  • SplitField
  • CombineFields

Unique values and rows

  • Unique
  • UniqueByFields
  • Distinct
  • ValueCounts
  • SortByField
  • SortByFields

Combine and report

Combine

  • AppendRows
  • Concat
  • ConcatByName
  • MergeColumns
  • Join
  • LeftJoin
  • RightJoin
  • FullJoin
  • JoinOn

Report and compare

  • GroupBy
  • GroupByE
  • DiffByKey
  • OrIndex
  • AndIndex
  • NotIndex

The common pattern

Most scripts can stay close to this shape:

input, err := simplecsv.ReadCsvFileE("input.csv")
if err != nil {
    log.Fatal(err)
}

result, ok := input.Where("status", "active")
if !ok {
    log.Fatal("status field not found")
}

result, ok = result.OnlyThisFields([]string{"id", "name"})
if !ok {
    log.Fatal("could not select fields")
}

if err := result.WriteCsvFileE("output.csv"); err != nil {
    log.Fatal(err)
}

For exact signatures and the complete package documentation, open simplecsv on pkg.go.dev. The repository README contains the longer API-oriented reference.