2017-12-31 93 views
1

すべてのセルに問題がなければExcelワークシートを読み込みます。!= nullがチェックされても、Excel.Rangeがnullをスローします

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Laufzeitbindungカンのfüreinen NULL-Verweis NICHTのausgeführtのwerdenダイ しかしが(そのために残念そのドイツ語、)私は例外を取得空のセルです。
BEI CallSite.Target(閉鎖、呼び出し場所、オブジェクト)

オクラホマが、問題はないはず、私は思ったので、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(); 
} 

しかし、私はまだ取得nullチェックのための "Microsoft.CSharp.RuntimeBinder.RuntimeBinderException"。

+0

ToString()を呼び出す前にnullをチェックする必要があります。ヌルのプロパティにアクセスしたり、メソッドを呼び出すことはできません。 – Crowcoder

+0

うわー!私は本当にこの時間は私の問題は "Noobの問題"ではないと思った。どうもありがとうございました!!! –

答えて

1

コードのValue2(行8)はnullです。 nullオブジェクトに対してToStringを呼び出すと、null ref例外がスローされます。 asは、nullオブジェクトに対して任意のインスタンスメソッドを呼び出します。オブジェクトのヌルチェックを行い、その上でToStringを呼び出します。

関連する問題