是等号的CSV有效吗?
我刚刚得到一个要处理的CSVinput文件,它在第一个分隔符之前有一个等号,并且想知道这个文件是否有效并且有任何用处。 示例(简化):
"2" "3" ="4"
阅读这样的一些post后,我尝试了一个像这样的CSV:
"2" "3" ="A1+A2"
和:
"2" "3" "=A1+A2"
似乎Excel和LibreOffice都默默地忽略了引号之前的等号,并很好地将引号后的等号作为公式的标志。 不过,我找不到任何有关这方面的文件。
(对于Excel,此CSV需要以.txt扩展名保存,并使用control-O打开)
我倾向于在公开报价之前用等号标注CSV,因为在阅读这个文件时很容易处理这个错误,但是仍然想知道是否还有更多这样的说法。
这被Excel用来避免前导零的丢失。
例如,如果在csv文件中有这样一个字段: 0123456
,则Excel会将其视为一个数字,并丢失前导零。
将它保存为="0123456"
解决了这个问题。
使用"0123456"
也无济于事,因为引号不是用来指示文本字段,而是用于在字段中转义可能的分隔符。
就像拥有sep=;
在第一行使Excel使用正确的分隔符, =""
也是“非标准的”,或更好的: 特定于Excel ,因为没有真正的csv文件标准。
CSV没有官方标准。 正如它在逗号分隔值中所说的那样,
CSV文件格式的官方标准不存在,但RFC 4180为其许多方面提供了事实上的标准。
看看RFC 4180 ,一个字段被转义或不转义。 逃脱的领域有这样一个BNF定义:
escaped = DQUOTE *(TEXTDATA / COMMA / CR / LF / 2DQUOTE) DQUOTE
由于等号不是逃逸angular色的一部分,它可能就像“大富翁”中的“免费泊车”一样:规则对此没有任何规定, 事实上的标准是将500美元置于其下。
Excel不忽略=
in ="4"
或="A1 + A2"
,它将其视为一个常量公式。
如果您打开如下所示的csv文件:
"2" "3" ="4" ="A1+A2" "=A1+A2"
在Excel中,结果如下所示:
请注意A3
如何保持公式="4"
而不仅仅是数字4。
如果您具有以下内容的.csv文件:
"2" "3" ="4"
并在Excel中打开它,你会看到:
如你所见。 Excel将放弃前两项中的双引号,并将第三项转换为公式。
这就是Excel的function。
如果你想获得确切的文本到Excel (保留双引号),你可以使用macros。