我正在寻找一种方法将xlsx文件转换为Linux上的csv文件。
我不想使用PHP/Perl或类似的东西,因为我正在处理数百万行,所以我需要一些快速的东西。我在Ubuntu repos上找到了一个名为xls2csv的程序,但它只会转换xls (Office 2003)文件(我目前正在使用),但我需要对更新的Excel文件的支持。
什么好主意吗?
我正在寻找一种方法将xlsx文件转换为Linux上的csv文件。
我不想使用PHP/Perl或类似的东西,因为我正在处理数百万行,所以我需要一些快速的东西。我在Ubuntu repos上找到了一个名为xls2csv的程序,但它只会转换xls (Office 2003)文件(我目前正在使用),但我需要对更新的Excel文件的支持。
什么好主意吗?
当前回答
正如其他人所说,libreoffice可以将xls文件转换为csv文件。对我来说,问题在于纸张的选择。
这个libreoffice Python脚本在将单个表格转换为CSV方面做得很好。
用法是:
./libreconverter.py File.xls:"Sheet Name" output.csv
唯一的缺点(在我这边)是——无头似乎不管用。我有一个LO窗口,显示了一秒钟,然后退出。 这对我来说没问题,这是唯一能快速完成工作的工具。
其他回答
在bash中,我使用这个libreoffice命令来转换当前目录下的所有xlsx文件:
for i in *.xlsx; do libreoffice --headless --convert-to csv "$i" ; done
在执行之前关闭所有Libre Office打开实例,否则它将无声地失败。
该命令负责文件名中的空格。
几年后我又试了一次,但没有成功。这篇文章给出了一些提示,但最快的解决方案是作为根用户运行(或运行sudo libreoffice)。不优雅,但很快。
在Windows中使用命令scalc.exe
正如其他人所说,libreoffice可以将xls文件转换为csv文件。对我来说,问题在于纸张的选择。
这个libreoffice Python脚本在将单个表格转换为CSV方面做得很好。
用法是:
./libreconverter.py File.xls:"Sheet Name" output.csv
唯一的缺点(在我这边)是——无头似乎不管用。我有一个LO窗口,显示了一秒钟,然后退出。 这对我来说没问题,这是唯一能快速完成工作的工具。
Gnumeric电子表格应用程序提供了一个名为ssconvert的命令行实用程序,可以在各种电子表格格式之间进行转换:
$ ssconvert Book1.xlsx newfile.csv
Using exporter Gnumeric_stf:stf_csv
$ cat newfile.csv
Foo,Bar,Baz
1,2,3
123.6,7.89,
2012/05/14,,
The,last,Line
在Ubuntu上安装:
apt-get install gnumeric
在Mac上安装:
brew install gnumeric
https://gist.github.com/scottming/99c09685360376d4cac2de7c891e8050
您可以使用这个脚本。先添加依赖项:
Pip3安装pandas XLRD openpyxl
然后调用脚本:python3 getsheets.py <file.xlsx>
如果.xlsx文件有很多表,-s标志可以用来获得你想要的表。例如:
xlsx2csv "my_file.xlsx" -s 2 second_sheet.csv
Second_sheet.csv将包含my_file.xlsx中第二表的数据。