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

3

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

    soffice --headless --convert-to csv *

它给出了逗号分隔的版本(显然)。现在我想要得到分号分隔的csv文件。我考虑使用vim命令将逗号替换为分号。
    :%s/,/;/g

但这是不正确的,因为它替换了原始内容中故意保留的逗号。转换xls到csv时必须使用分隔符。

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


1
请参考维基了解更多详细信息。翻译后的文本为:soffice --convert-to csv:"Text - txt - csv (StarCalc)":59,34,0,1,1 -outdir /some/path * - lcd047
1
@lcd047,:“Text - txt - csv(StarCalc)” 用于过滤输入文件,数字用于选择编码格式。在wiki中没有更改分隔符的选项。 - srand9
2
你实际尝试过我提到的命令行吗?请再次阅读CSV过滤器的过滤选项部分。分隔符是第一个数字。维基百科中的44是逗号的(十进制)ASCII码,而上面的59是分号的ASCII码。 - lcd047
@lcd047,我已经尝试过了。它返回了一个错误,要求重新验证输入参数。不知何故,我错过了维基页面的某些部分。我会再仔细看一遍。 - srand9
@lcd047,你的解决方案非常好。它出现错误的原因是LibreOffice版本问题。我正在使用“LibreOffice 4.2.8.2 420(Build:2)”,其中不支持ouput_filter_options。它在LO 4.3*版本中运行良好。谢谢。我将其发布为答案 :) - srand9
1个回答

3

最终我得到了答案。添加output_filter_options就像魔法一样奏效。

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

这个维基链接对我很有帮助。以下是我所做的事情:
    soffice --headless --convert-to csv:"Text - txt - csv (StarCalc)":59,34,0,1,1 *.xls

注意:它仅与LibreOffice 4.3或更高版本兼容。

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