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