C# 导入数据表c时验证CSV文件的头#
很快,我将尝试将csv文件导入datatable。 我正在添加这样的列C# 导入数据表c时验证CSV文件的头#,c#,csv,datatable,C#,Csv,Datatable,很快,我将尝试将csv文件导入datatable。 我正在添加这样的列 DataTable data = new DataTable(); data.Columns.Add("ID", typeof(string)); data.Columns.Add("Name", typeof(string)).MaxLength = 150; data.Columns.Add("Last name", typeof(string)); 然后: using (var reader = new Strea
DataTable data = new DataTable();
data.Columns.Add("ID", typeof(string));
data.Columns.Add("Name", typeof(string)).MaxLength = 150;
data.Columns.Add("Last name", typeof(string));
然后:
using (var reader = new StreamReader(file.InputStream))
{
DataRow row;
var headers = reader.ReadLine();
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
string[] value = line.Split(',');
if (value.Length == data.Columns.Count)
{
row = data.NewRow();
row.SetField(0, ParseInt(value[0]));
row.SetField(1, value[1]);
row.SetField(2, value[2]);
//and so on
}
如果硬编码的标题与导入的文件相同,请提供验证标题的方法?
PS长度验证的效果不是很好。有时,如果CSV中的最后一列是emty,则最后一列不被计算。在读取第一行后,您是否可以对标题进行拆分,然后循环标题的长度,并使用相应的datatable列标题检查标题值
如果由于最后一列为空而导致文件中的标题较少,则可以这样做,因为数据表中没有任何数据可添加到该列中,但是这样检查应该确保数据文件中一行中的值将进入datatable中名称与标题匹配的列。难道不能在读取第一行后对标题进行拆分,然后循环标题的长度并使用相应的datatable列标题检查标题值吗
如果由于最后一列为空而导致文件中的标题较少,则可以这样做,因为数据表中没有任何数据可添加到该列中,但是这样检查应该确保数据文件中一行中的值将进入datatable中名称与标题匹配的列。我不清楚“验证标题”是什么意思:对它们进行计数?除此之外还有什么重要的?您最好使用已建立的CSV库,而不是出于各种原因依赖
string.Split()
。另外,Id
真的是字符串吗?如果它是为数据库绑定的,则应该从目标表创建datatable。我不清楚“验证头”是什么意思:计算它们?除此之外还有什么重要的?您最好使用已建立的CSV库,而不是出于各种原因依赖string.Split()
。另外,Id
真的是字符串吗?如果它是为数据库绑定的,则应该从目标表创建datatable