我正在生成一个CSV文件(用逗号而不是制表符分隔)。我的用户很可能通过双击来打开Excel中的CSV文件。我的数据可能包含逗号和语音标记,因此我按如下方式对它们进行转义。
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中打开这个文件时,我的转义不受重视。工作表上出现语音标记,逗号导致新列。
5条答案
按热度按时间apeeds0o1#
如果列值前面没有空格,Excel只会考虑逗号和语音标记的转义。因此,生成这样一个没有空格的文件...
解决了这个问题。
xeufq47z2#
如果你认为它是随机的,下面是一些规则。效用函数可以在这些规则的基础上创建。
1.如果该值包含逗号、换行符或双引号,则返回的String值应包含在双引号中。
1.值中的任何双引号字符都应使用另一个双引号进行转义。
1.如果该值不包含逗号、换行符或双引号,则String值应原样返回。
tcomlyy63#
根据Yashu的指导,我编写了下面的函数(这是PL/SQL代码,但应该很容易适应任何其他语言)。
hrirmatl4#
单引号也很好用,即使没有转义双引号,至少在Excel 2016中是这样:
Excel将把它放在5列中(如果您在“文本到列”向导中选择单引号作为“文本限定符”)
yshpjwxd5#
即使在双引号之后,我也有这个问题好几天了。
将管道分隔符替换为逗号,然后一切正常。