在Linux中使用命令行将xlsx转换为csv

370

我正在寻找在Linux上将xlsx文件转换为csv文件的方法。

由于我需要处理数百万行数据,因此我不想使用PHP / Perl或类似的东西,我需要一个快速的解决方案。我在Ubuntu仓库中找到了一个叫做xls2csv的程序,但它只能转换xls(Office 2003)文件(我目前在使用),但我需要支持更新的Excel文件。

有什么好的建议吗?


11
认为使用脚本语言实现的任何东西在本质上都会变得很慢似乎有些误导人,特别是由于这些语言中有趣的库往往具有用C编写的后端。 - Charles Duffy
2
Excel以前只能处理65536行数据,现在可以处理1048576行(http://support.microsoft.com/kb/120596)。如果要处理数百万行数据,那将会很困难。只是说一下... - Pavel Veller
1
@Pavel 可能分布在多个文件中。 - Charles Duffy
2
个人而言,我会使用Python的xlsv库来完成这个任务,但由于脚本化方法被排除在答案之外... 耸肩。(如果编程工具被排除在答案之外,那这怎么算是一个编程问题呢?) - Charles Duffy
1
@CharlesDuffy,我目前正在使用一个PHP库来完成这个任务,而xls2csv只需要1秒钟,而PHP却需要10分钟。真的是这样。 - user1390150
显示剩余3条评论
12个回答

3

正如其他人所说,可执行文件libreoffice可以将Excel文件(.xls)转换为CSV。 对我来说问题在于工作表的选择。

这个LibreOffice Python脚本可以很好地将单个工作表转换为CSV。

使用方法如下:

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

唯一的缺点(对我来说)是--headless似乎不起作用。我有一个LibreOffice窗口出现了一秒钟,然后就退出了。

这对我来说没关系;这是唯一能快速完成工作的工具。


1

您可以使用脚本getsheets.py。首先添加依赖项:

pip3 install pandas xlrd openpyxl

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接