使用 soffice 命令行将 xls 转换为分号分隔的 csv

Posted

技术标签:

【中文标题】使用 soffice 命令行将 xls 转换为分号分隔的 csv【英文标题】:Converting xls to semicolon delimited csv with soffice commandline 【发布时间】:2016-06-15 03:59:57 【问题描述】:

我正在尝试使用 soffice 将目录中的 xls 文件转换为 csv 格式。

    soffice --headless --convert-to csv *

它给出了逗号分隔的版本(显然)。现在我想获取分号分隔的 csv。

我想用 vim 命令将逗号替换为分号。

    :%s/,/;/g

但这不正确,因为它取代了有意保留在原始内容中的逗号。从 xls 转换为 csv 时必须分隔。

如何使用 soffice 命令行获取分号分隔的 csv?

【问题讨论】:

soffice --convert-to csv:"Text - txt - csv (StarCalc)":59,34,0,1,1 -outdir /some/path *。有关详细信息,请参阅wiki。 @lcd047, :"Text - txt - csv (StarCalc)" 用于过滤输入文件,数字用于选择编码格式。 wiki 中没有更改分隔符的选项。 你真的试过我提到的命令行吗?再次阅读Filter Options for the CSV Filter 部分。分隔符是第一个数字。 wiki 中的44 是逗号的(十进制)ASCII 码,而上面的59 是分号的ASCII 码。 @lcd047,我确实尝试过。它返回了一个错误,说要重新验证输入参数。不知何故,我错过了 wiki 页面的某些部分。我会再经历一遍。 @lcd047,您的解决方案工作得非常好。引发错误的原因是 libre office 版本。我正在使用不支持 ouput_filter_options 的“LibreOffice 4.2.8.2 420(Build:2)”。它适用于 LO 4.3* 版本。谢谢。我将其发布为答案:) 【参考方案1】:

终于,我得到了答案。添加 output_filter_options 就像一个魅力。

    --convert-to output_file_extension[:output_filter_name[:output_filter_options]] [--outdir output_dir] files

这个wiki link 帮助了。这是我所做的,

    soffice --headless --convert-to csv:"Text - txt - csv (StarCalc)":59,34,0,1,1 *.xls

注意:它适用于 libre office 4.3 或更高版本。

【讨论】:

以上是关于使用 soffice 命令行将 xls 转换为分号分隔的 csv的主要内容,如果未能解决你的问题,请参考以下文章

使用 soffice 进行命令行 pdf 打印

Libreoffice:如何使用高棉 Unicode 在命令行中将 .xlsx 转换为 .pdf 格式?

无法读取使用 soffice 命令转换 pdf 后得到的 .docx 文件

soffice.exe 将 odt 转换为 PDF/A

使用 soffice 将 doc 转换为 docx 不起作用

从命令行将 Swagger YAML 文件转换为 JSON