我应该如何转义CSV文件中的逗号和语音标记,以便它们在Excel中工作?

2022-08-31 08:53:31

我正在生成一个CSV文件(用逗号而不是制表符分隔)。我的用户很可能会通过双击 Excel 在 Excel 中打开该文件。我的数据可能包含逗号和语音标记,因此我按如下方式转义这些标记。

Reference, Title, Description
1, "My little title", "My description, which may contain ""speech marks"" and commas."
2, "My other little title", "My other description, which may also contain ""speech marks"" and commas."

据我所知,这一直是这样做的方法。这是我的困惑:当我在Excel 2010中打开这个文件时,我的转义没有得到尊重。工作表上显示语音标记,逗号会导致新列。


答案 1

我们最终找到了这个问题的答案。

Excel 将仅尊重逗号和语音标记的转义,如果列值前面没有空格。因此,生成没有空格的文件就像这样...

Reference,Title,Description
1,"My little title","My description, which may contain ""speech marks"" and commas."
2,"My other little title","My other description, which may also contain ""speech marks"" and commas."

...修复了问题。希望这有助于某人!


答案 2

如果您认为这是随机的,请遵循以下规则。可以在这些规则的基础上创建实用程序函数。

  1. 如果值包含逗号、换行符或双引号,则 String 值应括在双引号中。

  2. 值中的任何双引号字符都应使用另一个双引号进行转义。

  3. 如果值不包含逗号、换行符或双引号,则 String 值应返回不变。