即使选中!= null,Excel.Range也会抛出null

时间:2017-12-31 12:14:07

标签: c# excel exception

当我填充所有单元格时,我加载Excel工作表没有问题。 但是,如果一个Cell是空的,我会得到一个例外(它的德语,对不起):

  

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:死   LaufzeitbindungkannfüreinenNULL-Verweisnichtususführtwerden。
  bei CallSite.Target(Closure,CallSite,Object)

好的,应该没问题,我想,所以我检查单元格值是否为null:

for (row = 2; row <= range.Rows.Count; row++)  // Start at Row 2 to Ignore Headrow
{
    DataRow dr = dt.NewRow();
    for (column = 1; column <= range.Columns.Count; column++)
    {
        try
        {
            if(((Excel.Range)range.Cells[row, column]).Value2.ToString() != null)
            {
                dr[column - 1] = ((Excel.Range)range.Cells[row, column]).Value2.ToString();
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("Error " + column.ToString()); //Always Error when Cell is empty
            Console.WriteLine(e);

        }
    }

    sendConsole("Accept Row " + row + " of " + range.Rows.Count);
    dt.Rows.Add(dr);
    dt.AcceptChanges();
}

但我仍然得到“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”进行空检查。

1 个答案:

答案 0 :(得分:1)

代码中的Value2(第8行)为null。在null对象上调用ToString将抛出null ref异常。将调用null对象上的任何实例方法。对对象执行null检查,然后在其上调用ToString