diff --git a/README.md b/README.md new file mode 100644 index 0000000..96dadd4 --- /dev/null +++ b/README.md @@ -0,0 +1,73 @@ +# csv2excel + +A command-line tool that converts one or more CSV files into a single Excel (`.xlsx`) file. Each CSV file becomes a separate worksheet, named after the source file. + +## Features + +- Merges multiple CSV files into one Excel workbook +- Auto-detects the delimiter (`,`, `;`, `\t`) +- Supports UTF-8 and Windows-1252 encoding +- Tolerant with malformed CSV files (`LazyQuotes`) +- Version info injected at build time via git tags + +## Installation + +### From source + +Requires [Go](https://golang.org/) 1.21+. + +```bash +git clone https://code.beautifulmachines.dev/jakoubek/csv2excel +cd csv2excel +go install . +``` + +### Build with Mage + +Requires [Mage](https://magefile.org/). + +```bash +mage Build # current platform (auto) +mage BuildWindows # dist/csv2excel.exe +mage BuildLinux # dist/csv2excel +mage Install # install to $GOBIN +mage Clean # remove dist/ +``` + +## Usage + +``` +csv2excel [flags] file1.csv file2.csv ... +``` + +### Flags + +| Flag | Default | Description | +|------|---------|-------------| +| `-o` | `output.xlsx` | Output file path | +| `-sep` | `auto` | Delimiter: `auto`, `,`, `;`, `\t` | +| `-enc` | `utf8` | Encoding: `utf8`, `windows1252` | + +### Examples + +```bash +# Convert a single file +csv2excel data.csv + +# Merge multiple files into one workbook +csv2excel -o report.xlsx sales.csv inventory.csv customers.csv + +# Force semicolon delimiter, Windows-1252 encoding +csv2excel -sep ";" -enc windows1252 -o result.xlsx export.csv +``` + +Each CSV file becomes a worksheet named after the filename (without extension). Sheet names are truncated to 31 characters to comply with Excel's limit. + +## Dependencies + +- [excelize](https://github.com/xuri/excelize) — Excel file creation and manipulation +- [golang.org/x/text](https://pkg.go.dev/golang.org/x/text) — Character encoding support + +## License + +MIT