保存到 CSV 文件总是在 OpenOffice 中添加引号

lan*_*ng2 6 csv openoffice-calc

我正在尝试使用 OpenOffice Calc 编辑带有TAB分隔符的CSV 文件。无论我做什么,Calc 都坚持在字符串中添加引号 (")。如果单元格内容只有数字,那也没关系。

有没有办法不让 Calc 这样做?我的意思是,TAB 对任何解析器都足够了,对吧?

slh*_*hck 1

为什么需要双引号?

\n
\n

我的意思是,TAB 对于任何解析器来说都足够了,对吧?

\n
\n

不,从技术上来说并不是这样!正如我在关于Excel 的 CSV 格式的回答中提到的,CSV 文件的通用格式和 MIME 类型(RFC 4180) 指定:

\n
\n

\xe2\x80\xa6 每个字段可能会也可能不会用双引号括起来(但是\n某些程序,例如 Microsoft Excel,根本不使用双引号\n)。如果字段没有用双引号括起来,则\n双引号可能不会出现在字段内。

\n
\n

到目前为止,一切都很好。Calc 显然选择始终将其括在双引号中。

\n
\n

包含换行符 (CRLF)、双引号和逗号的字段应括在双引号中

\n
\n

\xe2\x80\xa6 所以这里必须使用双引号才能再次正确解析 CSV。

\n

Calc 为什么要添加它们?

\n

Calc 可能这样做是作为所有文本字段的安全措施。相反,Excel 所做的事情有些模糊。

\n

你怎样才能避免它们呢?

\n

我发现一个论坛帖子建议使用宏来禁用文本分隔符:

\n
Dim oDocCsv As Object       \nDim CsvProperties(2) As New com.sun.star.beans.PropertyValue \n\n.... \n\nCsvProperties(0).Name    = "FilterName" \nCsvProperties(0).Value   = "Text - txt - csv (StarCalc)" \nCsvProperties(1).Name    = "FilterOptions" \nCsvProperties(1).Value   = "124,0,ANSI,2" \n\n.... \n\noDocCsv.storeAsURL("test.csv", CsvProperties()) \n
Run Code Online (Sandbox Code Playgroud)\n

这里重要的选项是与 的行124,0,ANSI,2。根据过滤器选项参考,第二部分(即0)在导出时禁用文本分隔符。

\n