C# 校对每行.CSV
CSVHelper和FileHelper不是一个选项 我有一个.csv导出,我需要检查其结构的一致性,如下所示 引用、日期、条目ID ABC123,08/09/2015123 ABD234,08/09/2015124 XYZ987,07/09/2015125 QWE456,2016年9月8日,126 我可以使用C# 校对每行.CSV,c#,csv,file.readalllines,C#,Csv,File.readalllines,CSVHelper和FileHelper不是一个选项 我有一个.csv导出,我需要检查其结构的一致性,如下所示 引用、日期、条目ID ABC123,08/09/2015123 ABD234,08/09/2015124 XYZ987,07/09/2015125 QWE456,2016年9月8日,126 我可以使用ReadLine或reallalllines和.Split来获得整行/整列,但我需要选择每一行,然后通过每个属性(以“,”分隔)进行格式检查 我在这里遇到了问题。对于此检查,我无法在一行中
ReadLine
或reallalllines
和.Split
来获得整行/整列,但我需要选择每一行,然后通过每个属性(以“,”分隔)进行格式检查
我在这里遇到了问题。对于此检查,我无法在一行中挑出每个值。
它可能是一件简单的事情
class Program
{
static void Main(string[] args)
{
string csvFile = @"proof.csv";
string[] lines = File.ReadAllLines(csvFile);
var values = lines.Skip(1).Select(l => new { FirstRow = l.Split('\n').First(), Values = l.Split('\n').Select(v => int.Parse(v)) });
foreach (var value in values)
{
Console.WriteLine(string.Format("{0}", value.FirstRow));
}
}
}
或者我走错了路,我的搜索涉及到提取特定的行或列(而不是检查关联的单个值)
上面的数据示例有一个突出显示的示例:日期是明年,我希望能够证明该值(只是一个示例,因为它可能出现在出现错误的任一列中)
我无法在一行中挑出每个值
这是因为您在\n
上拆分了两次。行中的值用逗号分隔(,
)
我不确定LINQ应该做什么,但事情很简单:
string[] lines = File.ReadAllLines(csvFile);
foreach (var line in lines.Skip(1))
{
var values = line.Split(',');
// access values[0], values[1] ...
}
而不是通过OLEDB对象将其作为文本读取,所以CSV文件的数据将进入datatable,您无需将其吐出 要读取csv文件,可以使用OLEDB的这些对象
System.Data.OleDb.OleDbCommand
System.Data.OleDb.OleDbDataAdapter
System.Data.OleDb.OleDbConnection
及
如果您试图获取数组中的每个单元格值,可以使用CSVHelper。抱歉,我一开始就有,但意识到它可能会在文本中丢失。我不能使用cvsHelper或FileHelper。没有许可证你想证明什么?csv是否包含您在此处突出显示的特定值,或者根据您的ex,第二列是否始终为DateTime类型,第三列是否为Number类型等等?因此,您正在尝试查找csv的最后一行是否为斜体?我开玩笑说,当然了,但不清楚你到底想验证什么,一个通用的解决方案可能会更加混乱。请注意,尽管看起来很简单,CSV根本不是一种简单的(或定义良好的)格式,但当我交换“CSV”时,我仍然会得到与我所说的相同的结果,LINQ的所有内容都很难遵循。只要写一个很好的循环,如果你喜欢,就把它挂起来。您不需要使用LINQ。什么是“相同的结果”?var值=line.Split或line.Split?但是您需要访问许可证。
System.Data.DataTable