我正在寻找一种方法将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窗口,显示了一秒钟,然后退出。 这对我来说没问题,这是唯一能快速完成工作的工具。

其他回答

https://gist.github.com/scottming/99c09685360376d4cac2de7c891e8050

您可以使用这个脚本。先添加依赖项:

Pip3安装pandas XLRD openpyxl

然后调用脚本:python3 getsheets.py <file.xlsx>

使用csvkit

in2csv data.xlsx > data.csv

详情请查阅他们优秀的文档

你可以使用LibreOffice:

libreoffice --headless --convert-to csv $filename --outdir $outdir

出于我不清楚的原因,您可能需要使用sudo运行此程序。你可以让LibreOffice使用sudo而不需要密码,添加这行到你的sudoers文件:

users ALL=(ALL) NOPASSWD: libreoffice

使用Gnumeric电子表格应用程序,其中有一个命令行实用程序称为ssconvert,确实超级简单:

find . -name '*.xlsx' -exec ssconvert -T Gnumeric_stf:stf_csv {} \;

这样就完成了!

正如其他人所说,libreoffice可以将xls文件转换为csv文件。对我来说,问题在于纸张的选择。

这个libreoffice Python脚本在将单个表格转换为CSV方面做得很好。

用法是:

./libreconverter.py File.xls:"Sheet Name" output.csv

唯一的缺点(在我这边)是——无头似乎不管用。我有一个LO窗口,显示了一秒钟,然后退出。 这对我来说没问题,这是唯一能快速完成工作的工具。