C#输出到.csv文件而不是用逗号分隔列

时间:2016-07-12 16:04:49

标签: c# excel csv

我有一个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()代替此方法,并使用制表符作为分隔符而不是逗号,但我得到相同的结果。
我似乎找不到任何与谷歌有同样问题的人,事实上,当我搜索这个问题时,我得到的结果是想要在数据中使用逗号而不是列的人,这与此完全相反的问题

2 个答案:

答案 0 :(得分:1)

好的,首先,我建议在文本周围添加引号......类似于

w.WriteLine('"' + p.id.ToString().Replace("\"", "\"\"") + "\",\"" + 
    p.model.Replace("\"", "\"\"") + ',' + 
    p.num.ToString().Replace("\"", "\"\""));

答案 1 :(得分:0)

这可能为时已晚,但我遇到了相同的问题。我修复了它,这是一个愚蠢的问题。我忘了我在德国服务器/实例中编码,所以他们在CSV中使用的分隔符实际上是分号,而不是逗号。尝试将定界符更改为分号-当您通过Excel打开CSV文件时,它将把标题分成不同的列。