2011-04-21 78 views
16

可能重复:
Dealing with commas in a CSV file如何使用逗号在CSV列

我们出口的批量数据转化为我们的项目的一个CSV文件。所以在这种情况下,我们必须导出像a,b,c,d这样的值,这些值必须保留在一列中。但逗号将它们分隔到不同的列。

就像我们导出一些在textarea或编辑器中输入的包含像\ r \ n这样的字符的值将被导出为csv中的单独行。我怎么解决这个问题??

+4

http://stackoverflow.com/questions/769621/dealing-with-commas-in-a-csv-file – 2011-04-21 06:30:42

回答

5

处理此问题的最常见方法是使用"" around该字段,但根据谁在使用您的文件,可以通过多种方式进行处理。您可以划定逗号,你可以改变逗号一个特殊值或使用不同的分隔符,但大多数命令

49
 // CSV rules: http://en.wikipedia.org/wiki/Comma-separated_values#Basic_rules 
     // From the rules: 
     // 1. if the data has quote, escape the quote in the data 
     // 2. if the data contains the delimiter (in our case ','), double-quote it 
     // 3. if the data contains the new-line, double-quote it. 

     if (data.Contains("\"")) 
     { 
      data = data.Replace("\"", "\"\""); 
     } 

     if (data.Contains(",")) 
     { 
      data = String.Format("\"{0}\"", data); 
     } 

     if (data.Contains(System.Environment.NewLine)) 
     { 
      data = String.Format("\"{0}\"", data); 
     } 

数据可能是从类型的数据库或属性值的个别项目。

+0

非常有帮助,它解决了我的问题,但在Excel中打开显示消息,它是在不同的格式 – 2012-08-21 07:09:38

+2

我认为这个项目应该是:'if(data.Contains(“\”“)){data = String.Format(”\“{0} \”“,data.Replace(”\“”,“\”\ “”)); }作为转义引用必须位于引号内的字符串中。 – DelftRed 2014-11-05 06:48:55

+0

用excel 2013,需要用记事本++打开文件,在第一行添加** sep =,**。 – 2016-12-27 10:52:47