Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zitsen/xlsx2csv.rs
Excel (eg. .xlsx/.xls) to CSV/TSV Format Converter in Rust
https://github.com/zitsen/xlsx2csv.rs
cli csv rust spreadsheet worksheet xlsx2csv
Last synced: 7 days ago
JSON representation
Excel (eg. .xlsx/.xls) to CSV/TSV Format Converter in Rust
- Host: GitHub
- URL: https://github.com/zitsen/xlsx2csv.rs
- Owner: zitsen
- License: apache-2.0
- Created: 2017-07-12T02:06:29.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-11-07T10:06:52.000Z (about 1 year ago)
- Last Synced: 2024-07-17T21:58:34.667Z (4 months ago)
- Topics: cli, csv, rust, spreadsheet, worksheet, xlsx2csv
- Language: Rust
- Homepage:
- Size: 94.7 KB
- Stars: 68
- Watchers: 4
- Forks: 13
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# xlsx2csv - An Excel-like spreadsheet to CSV coverter writen in Rust.
```
USAGE:
xlsx2csv [FLAGS] [OPTIONS] [output]...FLAGS:
-h, --help Prints help information
-i, --ignore-case Rgex case insensitivedly
-l, --list List sheet names by id
-u, --use-sheet-names Use sheet names as output filename prefix (in current dir or --workdir)
-V, --version Prints version informationOPTIONS:
-d, --delimiter Delimiter for output [default: ,]
-X, --exclude A regex pattern for matching sheetnames to exclude, used with '-u'
-I, --include A regex pattern for matching sheetnames to include, used with '-u'
-s, --select Select sheet by name or id in output, only used when output to stdout
-w, --workdir Output files location if `--use-sheet-names` settedARGS:
Input Excel-like files, supports: .xls .xlsx .xlsb .xlsm .ods
... Output each sheet to sperated file
```## Install
```sh
cargo install xlsx2csv
```## Advanced Usage
### output sheets one-by-one
Simple usage is similar to `ssconvert` syntax, like this:
```sh
xlsx2csv input.xlsx sheet1.csv sheet2.csv
```This will output the first to `sheet1.csv`, the second to `sheet2.csv`, and ignore other sheets.
### pipe output
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 is 0-based):
```sh
xlsx2csv input.xlsx -s 1
```In previous command, it'll output the second(0-based 1 is the second) sheet to stdout.
### list sheetnames
Use `--list/-l` it will just print all the sheetnames by id.
```sh
xlsx2csv --list
xlsx2csv -l
```### multiple sheets without filename setted
If there's many sheets that you don't wanna set filename for each,
use `-u/--use-sheet-names` to write with sheetnames.```sh
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 ','.
### multiple sheets matching or not matching a regex pattern
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:```sh
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`.
## Detailed options
The following is printed by `xlsx2csv --help`
```
USAGE:
xlsx2csv [FLAGS] [OPTIONS] [output]...FLAGS:
-h, --help
Prints help information-i, --ignore-case
Regex case insensitivedly.
When this flag is provided, the include and exclude patterns will be searched case insensitively. used with
'-u'.
-l, --list
List sheet names by id-u, --use-sheet-names
Use sheet names as output filename prefix (in current dir or --workdir)-V, --version
Prints version informationOPTIONS:
-d, --delimiter
Delimiter for output.
If `use-sheet-names` setted, it will control the output filename extension: , -> csv, \t -> tsv [default: ,]
-X, --exclude
A regex pattern for matching sheetnames to exclude, used with '-u'-I, --include
A regex pattern for matching sheetnames to include, used with '-u'-s, --select
Select sheet by name or id in output, only used when output to stdout-w, --workdir
Output files location if `--use-sheet-names` settedARGS:
Input Excel-like files, supports: .xls .xlsx .xlsb .xlsm .ods...
Output each sheet to seprated file.
If not setted, output first sheet to stdout.
```## License
[MIT](LICENCE-MIT) OR [Apache-2.0](LICENCE-APACHE)