创buildcsv文件时,Excel显示双引号

我用C#创build了一个.csv文件,当我在Excel中打开这个文件时,它在单元格中显示双引号。

当我在Notepad ++中打开csv时,看到引号在那里,一切看起来都正确。 这是我的csv的一部分:

"CertificaatNummer", "Data", "Inleg", "Getekend", "Ingangsdatum", "Betaalmethode", "Status", "Bonus", "Aankoopkoers", "Korting", "Garantiewaarde", "Betaalde termijnen", "Inleg nominaal", "Tweede naam", "Recht op bonus maand", "Begunstigde", "Product", "Incasserekening", "Uitbetaalrekening" "126136", "some data with, a comma", "118.34", "True", "28-1-1999 00:00:00", "Cash", "C02", "0.00", "531,940", "0,000", "0.00", "0", "0.00", "", "False", "PH Bloemink", "Cash-Click", "", "260952095" "137190", "other data", "0.00", "True", "23-12-1999 00:00:00", "Cash", "C02", "0.00", "660,620", "0,000", "0,00" 

当我在Excel中打开这个文件的时候,在some data with, a comma作为新列。 所以我在a comma" ant cell a comma"中得到"Some data with一个单元格和a comma" "Some data with a comma" 。 如您所见,Excel不关心双引号。

这是我的代码看起来像(简化):

 var content = new List<string>(); // Add headers content.Add("\"Header 1\", \"Header 2\", \"Header 3\", \"Header 4\""); // Add content content.Add("\"123456\", \"some data with, a comma\", \"118.34\", \"True\""); // etc.. // I let a function create my file content using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) { foreach (var line in this.content) { writer.WriteLine(line); } writer.Flush(); return stream.ToArray(); } // finally I return the file content to the browser with // HttpContext.Response.AddHeader("content-disposition", "file;name=" + fileName); 

问题是,我必须编辑我的代码的哪一部分,以便Excel将正确显示我的文件? 我宁愿编辑我的代码,然后在Excel中执行一些技巧。

问题似乎是逗号分隔符之后的空格。
代替

 "some, text","Other text" 

您的代码正在生成:

 "some, text",<space>"Other text" 

所以Excel CSV导入程序正在变得stream行起来。 删除这些额外的空间,你应该没问题。

前段时间,我发现Excel喜欢使用UTF-16LE编码的CSV文件,标签(ASCII代码为9)作为分隔符。 它甚至接受(并删除)值的双引号。

只需要用“\”符号来反映逗号。

或者,如果您以编程方式执行,则只需触发Replace(",","\,")方法