【问题标题】:is a CSV with equal sign valid?带等号的 CSV 是否有效?
【发布时间】:2016-04-08 08:10:49
【问题描述】:

我刚得到一个要处理的 CSV 输入文件,它在第一个定界引号之前有一个等号,我想知道这是否有效并且有任何用途。示例(简化):

"2"
"3"
="4"

在阅读了this one 之类的帖子后,我尝试了这样的 CSV:

"2"
"3"
="A1+A2"

和:

"2"
"3"
"=A1+A2"

似乎 Excel 和 LibreOffice 都默默地忽略了引号之前的等号,并且很好地将引号之后的等号视为公式的标志。但是,我找不到任何关于此的文档。

(对于 Excel,此 CSV 需要以 .txt 扩展名保存,并使用 control-O 打开)

我倾向于在打开引号之前用等号调用 CSV,因为这是一个在阅读此文件时很容易处理的错误,但我仍然想知道是否还有更多要说的。

【问题讨论】:

  • 如果您导入像 ="A1+A2" 这样的字段值,则单元格将显示 A1+A2 为文本,而公式(在公式栏中)仍然是 ="A1+A2"。如果您过于冒险尝试将公式作为 CSV 字段引入,您可能会遇到#NAME! 错误。这并不是说不能引入公式,但我发现有时您需要查找和替换 = to = 来将公式“断言”为真正的公式,而不是看起来像公式的文本.

标签: excel csv excel-formula


【解决方案1】:

CSV 没有官方标准。正如Comma-separated values 所说,

CSV 文件格式的官方标准不存在,但 RFC 4180 为它的许多方面提供了事实上的标准。

查看RFC 4180,一个字段要么被转义,要么未被转义。转义字段的 BNF 定义如下:

escaped = DQUOTE *(TEXTDATA / COMMA / CR / LF / 2DQUOTE) DQUOTE

由于等号不是转义字符的一部分,它可能就像《大富翁》中的“免费停车”:规则对此没有任何规定,但事实上的标准是放置500 美元以下。

【讨论】:

【解决方案2】:

Excel 不会忽略 ="4"="A1 + A2" 中的 =,而是将其视为常量公式。

如果你打开的 csv 文件看起来像:

"2"
"3"
="4"
="A1+A2"
"=A1+A2"

在 Excel 中,结果如下所示:

请注意A3 如何保存公式="4" 而不仅仅是数字 4。

【讨论】:

  • 很难决定哪个答案更好,我选择了另一个,但你的非常有用。 +1
  • 没问题,我也赞成接受的答案——标准的链接很有帮助。
  • 我还注意到A3 像字符串一样左对齐,因为公式返回一个字符串
【解决方案3】:

如果您有一个包含以下内容的 .csv 文件:

"2"
"3"
="4"

在Excel中打开,你会看到:

如你所见。 Excel 会舍弃前两项的双引号,并将第三项转换为公式。

这就是 Excel 的功能。

如果您想将准确的文本输入 Excel(保留双引号),您可以使用宏。

【讨论】:

  • 谢谢。就像刚才说的其他人一样,= 开始了一个公式,其效果是将数字内容视为字符串。
【解决方案4】:

Excel 使用它来避免丢失前导零。

例如,如果您的 csv 文件中有这样的字段:0123456,Excel 会将其视为数字并丢失前导零。

将其保存为="0123456" 即可解决此问题。

使用"0123456" 也无济于事,因为引号不是用来表示文本字段,而是用来转义字段内可能的分隔符。

就像在第一行使用sep=; 以使 Excel 使用正确的分隔符一样,="" 也是“非标准的”,或者更好:Excel 特定,因为没有csv 文件的真正标准。

【讨论】:

  • 太棒了!这不仅仅是将数字视为字符串
猜你喜欢
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
  • 2021-01-03
  • 2016-10-26
  • 2023-03-04
相关资源
最近更新 更多