使用C#处理CSV文件

时间:2013-07-02 23:10:59

标签: c# csv

我正在创建CSV导入工具(以逗号分隔)。我试图使这个导入工具尽可能通用,以便它可以处理任何CSV文件。

我几乎已经完成了该工具,但遇到了一个我发现很难处理的文件。

如何使用以下格式处理包含数据的文件?

column1,column2,column3,column4,column5
----------
alex,p,22323,23232,hello
mike,t,"121212,232323,4343434",33432,hi
guna,s,"2423,2332",whats
cena,a,34443,33432,up

由于文件以逗号分隔,并且其中一个值以逗号分隔,因此标识符"value,value,value"之间我发现很难处理。

我如何解决这个问题?

我无法控制CSV文件。所以我不能改变格式

1 个答案:

答案 0 :(得分:2)

根据@dtb ... use a CSV parser。如果你引用Microsoft.VisualBasic,那么你可以:

var data=@"column1,column2,column3,column4,column5
----------
alex,p,22323,23232,hello
mike,t,""121212,232323,4343434"",33432,hi
guna,s,""2423,2332"",whats
cena,a,34443,33432,up";

using (var sr = new StringReader(data))
using (var parser =
    new TextFieldParser(sr)
        {
            TextFieldType = FieldType.Delimited,
            Delimiters = new[] { "," },
            CommentTokens = new[] { "--" }
        })
{
    while (!parser.EndOfData)
    {
        string[] fields;
        fields = parser.ReadFields();
        //yummy
    }
}

这会正确处理报价。