Sheeter
Convert data files between formats from the command line.
Seven formats, forty-two routes. CSV, TSV, JSON, YAML, XML, TOML, XLSX — any direction, through a single canonical hub.
Install
cargo install sheeter-engine
The installed binary is sheeter.
Usage
sheeter convert --from <FMT> --to <FMT> [--sheet NAME] <input> <output>
Formats: csv, tsv, json, yaml, xml, toml, xlsx.
# CSV → JSON
sheeter convert --from csv --to json data.csv data.json
# XLSX (multi-sheet) → CSV (one file per sheet)
sheeter convert --from xlsx --to csv report.xlsx report.csv
# writes report.Sheet1.csv, report.Sheet2.csv, ...
# XLSX → JSON (single document keyed by sheet name)
sheeter convert --from xlsx --to json report.xlsx report.json
# Extract a single sheet
sheeter convert --from xlsx --to csv --sheet Vendas report.xlsx vendas.csv
# JSON → XLSX (single sheet named Sheet1)
sheeter convert --from json --to xlsx config.json config.xlsx
How it works
Every reader produces a CanonicalValue; every writer consumes one. Adding
a new format costs one reader and one writer, not N-1 pairwise converters.
Multi-sheet XLSX inputs produce one output per sheet for CSV and TSV, and a
single merged document for JSON, YAML, XML, TOML, and XLSX. Output filenames
use the pattern <stem>.<SheetName>.<ext>, with sheet names sanitized to
filesystem-safe characters.
Versioning
This project follows Semantic Versioning 2.0.0. Changelog follows Keep a Changelog 1.1.0. Commit messages follow Conventional Commits 1.0.0.