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格式。