使用 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的主要内容,如果未能解决你的问题,请参考以下文章
Libreoffice:如何使用高棉 Unicode 在命令行中将 .xlsx 转换为 .pdf 格式?
无法读取使用 soffice 命令转换 pdf 后得到的 .docx 文件