XLSX是MicrosoftExcel所使用的开放XML电子表格文件格式的文件扩展名,使用命令行将Microsoft Excel工作表转换为逗号分隔的文件(CSV )很简单。
1)Gnumeric电子表格程序
Gnumeric是Unix和Unix的电子表格程序,在GNU通用公共许可证下发布,它通过创建文件,并且在以后的会话中重新打开这些文件来存储它信息。它可以从多种格式导入和导出电子表格数据,包括CSV,microsoft Excel,HTML,OpenDocument,quattro和LaTeX 。
默认情况下,Gnumeric不在CentOS 的存储库中,必须首先安装最新的Lux版本,先下载它# wget http://repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm
--2017-10-13 23:32:19-- http://repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm
Resolving repo.iotti.biz (repo.iotti.biz)... 156.54.7.11
Connecting to repo.iotti.biz (repo.iotti.biz)|156.54.7.11|:80... connected.
现在你可以安装Lux版本# rpm -Uvh lux-release-7-1.noarch.rpm
warning: lux-release-7-1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID 53e4e7a9: NOKEYCSV
Preparing... ################################# [100%]
Updating / installing...
1:lux-release-7-1 ################################# [100%]
安装了Lux版本后,我们现在可以通过软件包安装gnumeric,# yum install gnumeric
Loaded plugins: fastestmirror, langpacks
lux | 2.9 kB 00:00:00
lux/7/primary_db | 1.0 MB 00:00:05
Loading mirror speeds from cached hostfile
* base: ftp.hosteurope.de
* epel: mirror.liquidtelecom.com
* extras: ftp.hosteurope.de
* updates: ftp.hosteurope.de
Resolving Dependencies
--> Running transaction check
---> Package gnumeric.x86_64 1:1.10.10-2.el7.lux.1 will be installed
现在可以使用gnumeric电子表格的ssconvert命令来转换文件# ssconvert book.xlsx file.csv
Using exporter Gnumeric_stf:stf_csv
你现在可以可视化这个文件# cat file.csv
fichier,
paul,
nathan,couvert
couloir,file
road,
2)xlsx2csv转换器
xlsx2csv转换器是一个python应用程序,可以批量将xlsx/xls文件转换为CSV格式,如果有多个工作表,xlsx2csv可以一次导出所有工作表,或者一次导出一个工作表。
要安装它,你需要安装python ,然后,你可以按以下的方式操作:# easy_install xlsx2csv
Searching for xlsx2csv
Reading https://pypi.python.org/simple/xlsx2csv/
Best match: xlsx2csv 0.7.3
Downloading https://pypi.python.org/packages/4c/56/4c7f595525839710ab563c8e5a48226021111c1324b1460e603256f7665c/xlsx2csv-0.7.3.tar.gz#md5=b9cffbbe815259987237135f99658c63
Processing xlsx2csv-0.7.3.tar.gz
现在可以转换xlsx文件# xlsx2csv book.xlsx > convert.csv
检查文件的内容# cat convert.csv
fichier,
paul,
nathan,couvert
couloir,file
road,
默认情况下,xlsx2csv命令仅转换第一个工作表,即使文件包含多个工作表,幸运的是,它提供了转换所有sheet或选择要转换的sheet的可能性,你可以使用一些有趣的参数:导出所有sheet-a, --all
csv中列分隔符的-d DELIMITER
用于分隔sheet分隔符的-p SHEETDELIMITER,如果不需要分隔符或表单提要的\'x07\'或\'f\',则传递\'\' (默认值):\'\'--------\'\')
要转换的sheet编号-s SHEETID
例如,如果你只想转换特定的sheet# xlsx2csv class.xlsx -s 2 > sheet2.csv
你可以检查# cat sheet2.csv
sheet2
take
linux
centos
现在,如果你想转换所有工作表,你可以如下所示,# xlsx2csv class.xlsx --all > allsheet.csv
按以下方式检查内容# cat allsheet.csv
-------- 1 - Sheet1
fichier
road
-------- 2 - Sheet2
sheet2
take
linux
centos
-------- 3 - Sheet3
devops
script
lxd
3)CSVKIT工具
csvkit是为使用CSV文件而优化的python库,它是一个使用csv格式操作,组织,分析和处理数据的好工具,在通过终端使用in2cv命令将各种常用文件格式转换为CSV格式,包括xls和xlsx。# pip install csvkit
Collecting csvkit
Using cached csvkit-1.0.2.tar.gz
Collecting agate>=1.6.0 (from csvkit)
按以下的方式转换:# in2csv Classeur2.xlsx > book3.csv
4)unoconv
OpenOffice附带了unoconv程序,可以在命令行执行格式转换,默认情况下,如果安装了openoffice 。你可以使用手册# unoconv --help
usage: unoconv [options] file [file2 ..]
Convert from and to any format supported by LibreOffice
unoconv options:
-c, --connection=string use a custom connection string
-d, --doctype=type specify document type
(document, graphics, presentation, spreadsheet)
-e, --export=name=value set export filter options
eg. -e PageRange=1-2
-f, --format=format specify the output format
-i, --import=string set import filter option string
eg. -i utf8
-l, --listener start a permanent listener to use by unoconv clients
-n, --no-launch fail if no listener is found (default: launch one)
-o, --output=name output basename, filename or directory
--pipe=name alternative method of connection using a pipe
-p, --port=port specify the port (default: 2002)
to be used by client or listener
--password=string provide a password to decrypt the document
-s, --server=server specify the server address (default: 127.0.0.1)
to be used by client or listener
--show list the available output formats
--stdout write output to stdout
-t, --template=file import the styles from template (.ott)
-T, --timeout=secs timeout after secs if connection to listener fails
-v, --verbose be more and more verbose (-vvv for debugging)
命令可以在各种文件格式之间进行转换,要使用unoconv命令转换csv,需要使用两个主要参数:-f 输出文件的格式
-o 指示转换文件的名称和路径# unoconv -f csv -o class2.csv Classeur2.xlsx
检查内容# cat class2.csv
fichier,
,
,couvert
,file
road,
注意,原始xlsx文件的第二行是空的,这就是为什么csv文件的第二行有逗号。
5)无头 Libreoffice
无头模式可以帮助你在命令行中启动LibreOffice,而不需要图形界面组件,你可以根据需要转换某些格式的文件,# libreoffice --headless --convert-to csv book.xlsx --outdir conv/
convert /home/admin/Desktop/book.xlsx -> /home/admin/Desktop/conv/book.csv using filter : Text - txt - csv (StarCalc)
检查文件# cat conv/book.csv
fichier,
paul,
nathan,couvert
couloir,file
road,
你可以直接转换某些xlsx文件,如下所示:# libreoffice --headless --convert-to csv --outdir conv/ *.xlsx
convert /home/admin/Desktop/book.xlsx -> /home/admin/Desktop/conv//book.csv using filter : Text - txt - csv (StarCalc)
convert /home/admin/Desktop/Classeur1.xlsx -> /home/admin/Desktop/conv//Classeur1.csv using filter : Text - txt - csv (StarCalc)
convert /home/admin/Desktop/Classeur2.xlsx -> /home/admin/Desktop/conv//Classeur2.csv using filter : Text - txt - csv (StarCalc)
convert /home/admin/Desktop/class.xlsx -> /home/admin/Desktop/conv//class.csv using filter : Text - txt - csv (StarCalc)
查看转换结果如下[[email protected] Desktop]# ls conv
book.csv class.csv Classeur1.csv Classeur2.csv
检查文件的内容# cat conv/Classeur2.csv
fichier,
,
,couvert
,file
road,
我们已经看到,Linux上可以使用不同工具在命令行上将XLSX文件转换成CSV格式。