#csv #sheet #excel #csv-tsv #xlsx #pattern-matching #input

app xlsx2csv

类似Excel的表格转换为CSV的转换器

12个版本

0.4.5 2023年11月7日
0.4.3 2022年4月6日
0.4.2 2021年4月8日
0.4.1 2021年1月17日
0.1.0 2017年7月12日

#697 in 解析实现

41 每月下载量

MIT/Apache

53KB
231

xlsx2csv - 使用Rust编写的类似Excel的电子表格到CSV的转换器。

USAGE:
    xlsx2csv [FLAGS] [OPTIONS] <xlsx> [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 information

OPTIONS:
    -d, --delimiter <delimiter>    Delimiter for output [default: ,]
    -X, --exclude <exclude>        A regex pattern for matching sheetnames to exclude, used with '-u'
    -I, --include <include>        A regex pattern for matching sheetnames to include, used with '-u'
    -s, --select <select>          Select sheet by name or id in output, only used when output to stdout
    -w, --workdir <workdir>        Output files location if `--use-sheet-names` setted

ARGS:
    <xlsx>         Input Excel-like files, supports: .xls .xlsx .xlsb .xlsm .ods
    <output>...    Output each sheet to sperated file

安装

cargo install xlsx2csv

高级用法

逐个输出工作表

简单用法类似于ssconvert语法,例如

xlsx2csv input.xlsx sheet1.csv sheet2.csv

这将输出第一个到sheet1.csv,第二个到sheet2.csv,并忽略其他工作表。

管道输出

如果没有设置输出位置参数,例如xlsx2csv input.xlsx,它将第一个工作表写入stdout。因此,两个命令是等效的

  • xlsx2csv input.xlsx 工作表1.csv
  • xlsx2csv input.xlsx>工作表1.csv.

如果您想将特定工作表输出到stdout,请使用-s/--select <id or name> (id从0开始)

xlsx2csv input.xlsx -s 1

在上面的命令中,它将第二个(从0开始,0是第二个)工作表输出到stdout。

列出工作表名称

使用--list/-l它将只按id打印所有工作表名称。

xlsx2csv --list
xlsx2csv -l

未设置文件名的多个工作表

如果您有很多工作表,不想为每个工作表设置文件名,请使用-u/--use-sheet-names以使用工作表名称写入。

xlsx2csv input.xlsx -u

如果您想将文件写入除.之外的目录,请使用-w/--workdir选项与-u选项一起使用。

xlsx2csv input.xlsx -u -w test/

文件扩展名由分隔符确定,逗号到,.csv,制表符到.tsv,其他视为逗号。

匹配或不匹配正则表达式模式的多个工作表

默认情况下,它将输出所有工作表,但如果你想通过正则表达式匹配工作表名称来选择,请使用-I/--include来只包含匹配项,并使用-X/--exclude来排除匹配项。你还可以将这两个选项组合起来,以include-first-exclude-after的顺序

xlsx2csv input.xlsx -I 'a\d+'
xlsx2csv input.xlsx -X '\s'
xlsx2csv input.xlsx -I '\S{3,}' -X 'Sheet'

最后一个命令行将首先包含所有与模式'\S{3,}'匹配的工作表,然后排除匹配项Sheet

详细选项

以下是由xlsx2csv --help打印的内容

USAGE:
    xlsx2csv [FLAGS] [OPTIONS] <xlsx> [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 information


OPTIONS:
    -d, --delimiter <delimiter>    
            Delimiter for output.
            
            If `use-sheet-names` setted, it will control the output filename extension: , -> csv, \t -> tsv [default: ,]
    -X, --exclude <exclude>        
            A regex pattern for matching sheetnames to exclude, used with '-u'

    -I, --include <include>        
            A regex pattern for matching sheetnames to include, used with '-u'

    -s, --select <select>          
            Select sheet by name or id in output, only used when output to stdout

    -w, --workdir <workdir>        
            Output files location if `--use-sheet-names` setted


ARGS:
    <xlsx>         
            Input Excel-like files, supports: .xls .xlsx .xlsb .xlsm .ods

    <output>...    
            Output each sheet to seprated file.
            
            If not setted, output first sheet to stdout.

许可证

MIT OR Apache-2.0

依赖关系

~18MB
~328K SLoC