2016-05-24 1 views
-3

Hallo Ich arbeite an einer Methode, um Daten aus Zellen zu extrahieren. Das funktioniert, aber jedes Mal, wenn ich eine leere Zelle erreiche, bekomme ich eine NullBinderException.Überprüfen Sie, ob Zelle leer ist, während Schleife zu brechen

Meine Frage ist, wie kann ich das verhindern? Hier

ist der Teil, der Probleme macht:

while ((range.Cells[startpoint, cell] as Excel.Range).Value2.ToString() != null) 
    { 
     for (int i = 1; i <= numberOfColumns; i++) 
     { 
      string sValue = (range.Cells[startpoint, cell] as Excel.Range).Value2.ToString(); 
      stringList.Add(sValue); 
      cell++; 
     } 
     startpoint++; 
     cell = 1; 
    } 

Stuff, die ich versucht:

range.Offset = Cant Verwendung becouse ist dies kein aviable Mitglied.
IsNullOrEmpty = Macht keinen Unterschied

So gibt es etwas, was ich nicht bekomme. Jede Hilfe oder Beratung wäre großartig und danke für Ihre Zeit.

while (! IsNull(range.Cells[startpoint, cell] as Excel.Range).Value2)) 
+0

'Value2' wird' null', wenn die Zelle leer ist. Sie können 'ToString' nicht sicher aufrufen. Überprüfen Sie stattdessen "... Value2! = Null". –

+0

Mögliches Duplikat von [Was ist eine NullReferenceException, und wie behebe ich es?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) –

+0

könnten Sie [try-catch (Referencia de C#)] (https://msdn.microsoft.com/es-es/library/0yd65esw.aspx) Ihre 'nullBinderException'. –

Antwort

1

den Zellbereich und/oder Wert2 kann null -:

1

Sie können Ihre while-Schleife als machen. Überprüfen Sie diese in Ihrer Where-Klausel.

while ((range.Cells[startpoint, cell] as Excel.Range) != null && (range.Cells[startpoint, cell] as Excel.Range).Value2 != null) 
{ 
    for (int i = 1; i <= numberOfColumns; i++) 
    { 
     string sValue = (range.Cells[startpoint, cell] as Excel.Range).Value2.ToString(); 
     stringList.Add(sValue); 
     cell++; 
    } 
    startpoint++; 
    cell = 1; 
} 
0

Sie versuchen Sie Ausnahme abfangen könnte wie:

try 
{ 
    while ((range.Cells[startpoint, cell] as Excel.Range).Value2.ToString() != null) 
    { 
    for (int i = 1; i <= numberOfColumns; i++) 
    { 
     string sValue = (range.Cells[startpoint, cell] as Excel.Range).Value2.ToString(); 
     stringList.Add(sValue); 
     cell++; 
    } 
    startpoint++; 
    cell = 1; 
    } 
} 
catch(nullBinderException e) 
{ 
    //you find an empty cell 
    //... break? jump over and continue? 
    //... your logic... 
}