在 OpenOffice 中保存为 CSV 文件时总会添加引号

在 OpenOffice 中保存为 CSV 文件时总会添加引号

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

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

答案1

为什么需要双引号?

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

不,严格来说不是!正如我在回答中提到的Excel 的 CSV 格式, 这CSV 文件的通用格式和 MIME 类型(RFC 4180)规定:

… 每个字段可能用双引号括起来,也可能不用(但有些程序,如 Microsoft Excel,根本不使用双引号)。如果字段没有用双引号括起来,那么字段内可能不会出现双引号。

到目前为止一切顺利。Calc 显然选择始终将其括在双引号中。

包含换行符 (CRLF)、双引号和逗号的字段应使用双引号括起来

…所以这就是双引号必须以便 CSV 能够再次被正确解析。

Calc 为什么要添加它们?

Calc 这样做可能是为了确保所有文本字段的安全。相反,Excel 的做法有些模棱两可。

如何避免这些问题?

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

Dim oDocCsv As Object       
Dim CsvProperties(2) As New com.sun.star.beans.PropertyValue 

.... 

CsvProperties(0).Name    = "FilterName" 
CsvProperties(0).Value   = "Text - txt - csv (StarCalc)" 
CsvProperties(1).Name    = "FilterOptions" 
CsvProperties(1).Value   = "124,0,ANSI,2" 

.... 

oDocCsv.storeAsURL("test.csv", CsvProperties()) 

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

答案2

在 notepad++ 中打开 TSV 文件(带双引号)

  1. 替换"""
  2. 替换\t"\t
  3. 替换"\t\t

notepad++ 替换对话框

您就完成了...

相关内容