错误:找不到第10列

时间:2017-08-14 20:03:25

标签: c# .net

我正在尝试将csv文件导入我的数据库。该文件有10列。仅仅为了测试目的,我首先只导入了第4列,它工作正常但是当我尝试导入所有列时,我得到一个错误,说找不到第10列。

这是我的代码

`

        DataTable dt = new DataTable();
        dt.Columns.AddRange(new DataColumn[10] { new DataColumn("Invoice", typeof(string)),
        new DataColumn("P.O.Number", typeof(string)),
        new DataColumn("Line", typeof(int)),
        new DataColumn("Invoice_Date",typeof(DateTime)),
        new DataColumn("Gross", typeof(string)),
        new DataColumn("Disc", typeof(string)),
        new DataColumn("NET", typeof(string)),
        new DataColumn("Date_PD", typeof(string)),
        new DataColumn("Check#_Doc#", typeof(string)),
        new DataColumn("Additional_Info", typeof(string))});


        string csvData = File.ReadAllText(csvPath);
        foreach (string row in csvData.Split('\n'))
        {
            if (!string.IsNullOrEmpty(row))
            {
                dt.Rows.Add();
                int i = 0;
                foreach (string cell in row.Split(','))
                {
                    dt.Rows[dt.Rows.Count - 1][i] = cell;
                    i++;
                }
            }
        }`

1 个答案:

答案 0 :(得分:0)

列的索引从0开始,到9而不是10。 您正在尝试添加不存在的列索引。

int i = 0;
foreach (string cell in row.Split(','))
{
    if(i == 10)
        throw new ArgumentOutOfRangeException(nameof(i));


    dt.Rows[dt.Rows.Count - 1][i] = cell;
    i++;
}

如果您的源中有额外的,逗号,该异常将阻止将错误数据写入数据源。

我建议您投入时间将源转换为|管道分隔文件,因为,逗号可以在数据中常用。