是否有人知道.NET库来验证csv文件,类似于https://github.com/frictionlessdata/goodtables-py。 谷歌搜索后,我还没有找到足够的东西。
提前致谢
答案 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
}
}
}