在Linux Shell脚本中将xlsx转换为xls


14

我需要使用shell命令将“ .xlsx”文件转换为“ .xls”。

在我的工作中,我们当前正在使用xlsx2csv命令,但现在要求已更改,我们需要将所有“ .xlsx”文件转换为“ .xls”文件以进行进一步计算。

为此,我工作的某个人开发了一个命令,可以将“ .xlsx”转换为“ .xls”,但是仅适用于一张纸。

一个文件中有多个工作表。

提前致谢....


也可以使用pyxl库完成此操作,情况与此相反:stackoverflow.com/questions/9918646/how-to-convert-xls-to-xlsx
标记

Answers:


20

如果安装LibreOffice,则可以使用以下命令:

libreoffice --headless --convert-to xls myfile.xlsx

要不就:

libreoffice --convert-to xls myfile.xlsx

在最新版本(> = 4.5)中,--convert-to意味着--headless

这将创建myfile.xls,并保留原始的myfile.xlsx,因此您可能需要在确认转换成功后进行清理。


此选项非常好,但我认为存在一个问题,它会打开libreoffice实例,然后将其转换为“ .xls”文件。是否还有其他选项无法打开libreoffice并且仍然能够转换为“ .xls”文件?你能帮我吗?@forquare
Prem Joshi

1
@PremJoshi手册页说:“ [-convert-to]意味着--headless。” 因此未打开GUI。但是,在启动后首次启动它时,它在注册服务时可能会显示初始屏幕或类似内容(取决于您的桌面)。
lgeorget

1
@Igeorget!选项“ --headless”对我有用!这是我的问题的确切答案。
Prem Joshi

3
--convert-to暗示的提交--headlessgerrit.libreoffice.org/…(版本4.4)。在以前的版本中,必须同时传递两个选项。
lgeorget

1
请注意xls格式65535行限制,因为如果xlsx文件超过该限制,此命令不会显示任何警告消息(它将输出与原始行不符的65535行文件,并且没有警告)
golimar

6

您也可以尝试使用数字ssconvert的伴随转换工具

ssconvert in.xlsx out.xls

(通常,请参见man ssconvert

对于正常情况,这很好。如果基于(libreoffice和gnumeric)的转换器中的输入文件都非常高级,则某些细节可能会丢失。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.