用于.NET的CSV验证库

时间:2017-10-16 10:33:52

标签: c# .net validation csv

是否有人知道.NET库来验证csv文件,类似于https://github.com/frictionlessdata/goodtables-py。 谷歌搜索后,我还没有找到足够的东西。

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以尝试Cinchoo ETL - 一个满足您需求的开源库

您可以通过多种方式验证CSV文件

bool isValid = true;
using (var cr = new ChoCSVReader("sample.csv")
    .WithFirstLineHeader()
    .WithField("firstName")
    .WithField("lastName")
    .WithField("salary", fieldType: typeof(double))
    .Setup(c => c.RecordLoadError += (o, e) => { isValid = false; e.Handled = true; })
    .Configure(c => c.ErrorMode = ChoErrorMode.ReportAndContinue)
)
{
    foreach (var x in cr)
        Console.WriteLine(ChoUtility.ToStringEx(x));
}
Console.WriteLine(isValid);

在下一个版本中,您可以进行更简单的验证

using (var cr = new ChoCSVReader("sample.csv")
    .WithFirstLineHeader()
    .WithField("firstName")
    .WithField("lastName")
    .WithField("salary", fieldType: typeof(double))
)
{
    foreach (var x in cr)
        Console.WriteLine(ChoUtility.ToStringEx(x));

    Console.WriteLine(cr.IsValid);
}

免责声明:我是这个图书馆的作者。

答案 1 :(得分:0)

您可以在下面使用.Net Framework程序集,并查找类型 TextFieldParser 。但是你仍然需要编写一些简单的代码

  

Microsoft.VisualBasic程序集

    using Microsoft.VisualBasic.FileIO;
...
var path = @"C:\CsvFile.csv";
using (var parser = new TextFieldParser(path))
{
    parser.TextFieldType = FieldType.Delimited;
    parser.SetDelimiters(",");

    string[] line;
    while (!parser.EndOfData)
    {
        try
        {
            line = parser.ReadFields();
        }
        catch (MalformedLineException ex)
        {
            // log ex.Message
        }
    }
}