Excel 文件可以使用以下方法转换为 CSV:
$ libreoffice --convert-to csv --headless --outdir dir file.xlsx
一切似乎都工作得很好。不过,编码设置有些奇怪。如果我从 LibreOffice Calc 手动“另存为”,我得到的不是 UTF-8 mdash (—),而是 \227 (�)。使用文件CSV 上的内容给了我“非 ISO 扩展 ASCII 文本,行很长”。那么,两个问题:
- 这里到底发生了什么?
- 如何告诉 libreoffice 转换为 UTF-8?
我要转换的特定文件是这里。
答案1
显然 LibreOffice 默认尝试使用 ISO-8859-1,这导致了问题。
回应此错误报告--infilter
,添加了一个新参数。以下命令产生U+2014 破折号:
libreoffice --convert-to csv --infilter=CSV:44,34,76,1 --headless --outdir dir file.xlsx
我用 LO 5.0.3.2 对此进行了测试。从错误报告来看,包含此选项的最早版本似乎是 LO 4.4。
答案2
你可以尝试一下,
$ libreoffice --convert-to \
> csv:"Text - txt - csv (StarCalc)":"44,34,0,1,,0" \
> --headless --outdir dir file.xlsx
这里,你有非常详细的帮助。