我们出口的批量数据转化为我们的项目的一个CSV文件。所以在这种情况下,我们必须导出像a,b,c,d这样的值,这些值必须保留在一列中。但逗号将它们分隔到不同的列。
就像我们导出一些在textarea或编辑器中输入的包含像\ r \ n这样的字符的值将被导出为csv中的单独行。我怎么解决这个问题??
我们出口的批量数据转化为我们的项目的一个CSV文件。所以在这种情况下,我们必须导出像a,b,c,d这样的值,这些值必须保留在一列中。但逗号将它们分隔到不同的列。
就像我们导出一些在textarea或编辑器中输入的包含像\ r \ n这样的字符的值将被导出为csv中的单独行。我怎么解决这个问题??
处理此问题的最常见方法是使用"" around该字段,但根据谁在使用您的文件,可以通过多种方式进行处理。您可以划定逗号,你可以改变逗号一个特殊值或使用不同的分隔符,但大多数命令
// 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);
}
数据可能是从类型的数据库或属性值的个别项目。
非常有帮助,它解决了我的问题,但在Excel中打开显示消息,它是在不同的格式 – 2012-08-21 07:09:38
我认为这个项目应该是:'if(data.Contains(“\”“)){data = String.Format(”\“{0} \”“,data.Replace(”\“”,“\”\ “”)); }作为转义引用必须位于引号内的字符串中。 – DelftRed 2014-11-05 06:48:55
用excel 2013,需要用记事本++打开文件,在第一行添加** sep =,**。 – 2016-12-27 10:52:47
http://stackoverflow.com/questions/769621/dealing-with-commas-in-a-csv-file – 2011-04-21 06:30:42