Excel (eg. .xlsx/.xls) to CSV/TSV Format Converter in Rust
Simple usage is similar to ssconvert
syntax, like this:
xlsx2csv input.xlsx sheet1.csv sheet2.csv
This will output the first to sheet1.csv
, the second to sheet2.csv
, and ignore other sheets.
If no output position args setted, eg. xlsx2csv input.xlsx
, it'll write first sheet to stdout. So the two commands are equal:
xlsx2csv input.xlsx sheet1.csv
xlsx2csv input.xlsx > sheet1.csv
.If you want to select specific sheet to stdout, use -s/--select <id or name>
(id is 0-based):
xlsx2csv input.xlsx -s 1
In previous command, it'll output the second(0-based 1 is the second) sheet to stdout.
Use --list/-l
it will just print all the sheetnames by id.
xlsx2csv --list
xlsx2csv -l
If there's many sheets that you don't wanna set filename for each,
use -u/--use-sheet-names
to write with sheetnames.
xlsx2csv input.xlsx -u
If you want to write to directory other than .
, use -w/--workdir
along with -u
option.
xlsx2csv input.xlsx -u -w test/
The filename extension is detemined by delimiter, ,
to .csv
, \t
to .tsv
, others will treat as ','.
By default, it will output all sheets, but if you want to select by sheet names with regex match, use -I/--include
to include only matching, and -X/--exclude
to exclude matching.
You could also combine these two option with include-first-exclude-after order:
xlsx2csv input.xlsx -I 'a\d+'
xlsx2csv input.xlsx -X '\s'
xlsx2csv input.xlsx -I '\S{3,}' -X 'Sheet'
The last command line will first include all sheet with pattern '\S{3,}' matched and then exclude that match Sheet
.