【问题标题】:Validate header from CSV file when importing into Datatable c#导入Datatable c#时验证来自CSV文件的标题
【发布时间】:2019-11-10 21:28:58
【问题描述】:

很快,我正在尝试将 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 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,则最后一列不计算在内。

【问题讨论】:

  • 我不清楚您所说的“验证标头”是什么意思:计算它们?除此之外还有什么重要的?出于各种原因,您最好使用已建立的 CSV 库而不是依赖 string.Split()。另外,Id 真的是一个字符串吗?如果它是绑定到数据库的,你应该从目标表创建数据表

标签: c# csv datatable


【解决方案1】:

你不能在读完第一行后对标题进行拆分,然后循环获取标题的长度并使用相应的数据表列标题检查标题值吗?

如果文件中的标题较少,因为最后一列是空的,那很好,因为您不会有任何数据要添加到数据表中的该列,但是像这样检查应该确保在一行中的值数据文件将进入数据表中名称与标题匹配的列中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多