我有一个C#应用程序,它从SQL数据库中提取大量数据并对其进行处理。我想将该数据输出到.csv文件,但是当我将其写入.csv文件并打开它时,而不是将我的数据分成如下所示的列:
Id Model Number of items 10283 D 6 5673 B 4 224 X 2
我明白了:
Id,Model,Number of items 10283,D,6 5673,B,4 224,X,2
这是我用来将数据输出到.csv文件的代码:
using (StreamWriter w = new StreamWriter("C:\\Users\\User1\\Desktop\\test.csv"))
{
w.WriteLine("Id,Model,Number of items,etc.");
w.Flush();
//Products is a list of product, a custom class
foreach (product p in products)
{
//All properties of p shown here are strings
w.WriteLine(p.id.ToString() + ',' + p.model
+ ',' + p.num.ToString());
w.Flush();
}
}
我尝试使用AppendAllText()和WriteAllText()代替此方法,并使用制表符作为分隔符而不是逗号,但我得到相同的结果。
我似乎找不到任何与谷歌有同样问题的人,事实上,当我搜索这个问题时,我得到的结果是想要在数据中使用逗号而不是列的人,这与此完全相反的问题
答案 0 :(得分:1)
好的,首先,我建议在文本周围添加引号......类似于
w.WriteLine('"' + p.id.ToString().Replace("\"", "\"\"") + "\",\"" +
p.model.Replace("\"", "\"\"") + ',' +
p.num.ToString().Replace("\"", "\"\""));
答案 1 :(得分:0)
这可能为时已晚,但我遇到了相同的问题。我修复了它,这是一个愚蠢的问题。我忘了我在德国服务器/实例中编码,所以他们在CSV中使用的分隔符实际上是分号,而不是逗号。尝试将定界符更改为分号-当您通过Excel打开CSV文件时,它将把标题分成不同的列。