CSV解析器在一个例程/函数中?

时间:2010-03-09 00:22:31

标签: c# .net vb.net parsing csv

我知道有几个代码库可以根据标准解析CSV文件,但由于各种原因,我需要一个简单的例程(不是整个库)将CSV解析为DataTable或数组。这样的动物是存在还是灭绝? (最好是C#,但我也可以翻译vb.net)

3 个答案:

答案 0 :(得分:5)

参考Microsoft.VisualBasic.FileIO,您可以使用TextFieldParser

using (var parser =
    new TextFieldParser(@"c:\data.csv")
        {
            TextFieldType = FieldType.Delimited,
            Delimiters = new string[] { "," }
        })
{
    while (!parser.EndOfData)
    {
        string[] fields;
        fields = parser.ReadFields();
        //go go go!
    }
}

答案 1 :(得分:2)

编写自己的循环遍历每一行的方法,并使用逗号作为分隔符使用split方法。

如果你想使用linq解析csv,这是一个简单的例子:

http://www.fryan0911.com/2009/05/read-data-from-csv-using-linq.html

答案 2 :(得分:0)

编写自己的CSV解析器并不容易。你会遇到许多边缘情况。

阅读:http://www.secretgeek.net/csv_trouble.asp

@ spender的答案可能是你使用内置内容最接近的答案。

尝试CsvHelper(我维护的库)。它可以在NuGet上使用。它非常轻巧。如果您只需要一小段代码,则可以复制CsvParser.cs源并稍微修改它。基本上有一个函数可以完成超过100行的所有解析,包括注释。如果你想要一个单一的例程,那将是一个很好的例子。

如果您使用CsvHelper库,则可以轻松读入自定义类对象的集合。

var streamReader = // Create StreamReader to your CSV file.
var csvReader = new CsvReader( streamReader );
var myObjects = csvReader.GetRecords<MyObject>();