c#: string darf nicht null sein

Gast #3363651
Hi,
ich versuche gerade ein excel-file auszulesen und den inhalt in ein 
string zu schreiben.

Nun habe ich das Problem, dass eine Zelle im Excelsheet leer sein kann. 
die EPPlus.dll welche das excelsheet ausliest gibt in diesem Fall 'null' 
zurück.

Da ich den Ihnalt aber nach string konvertiere bekomme ich einen Fehler 
:-(
1
Datensatz.Artikel = currentWorksheet.Cells[i, 3].Value.ToString();
wie prüfe ich hier nur 'halbwegs übersichtlich' auf null?

die mir bekannte Lösung ist mir eigentlich schon zuviel Tipparbeit da es 
um rel. viele Spalten geht.
1
try
2
{
3
  Datensatz.Artikel = currentWorksheet.Cells[i, 3].Value.ToString();
4
}
5
catch
6
{
7
  Datensatz.Artikel = "";
8
}
Persönliche Seite
maik schrieb:
> die mir bekannte Lösung

das sit keine Lösung sondern eine Verschleierung von Problemen, da du 
hier JEDEN Fehlerfall ignorierst.

maik schrieb:
> wie prüfe ich hier
1
if(currentWorksheet.Cells[i, 3].Value != null) {
2
//ungeleich null
3
} else {
4
//null
5
}
das solte aber wohl hoffentlich in jedem C' Tutorial stehen also --> 
Kauf dir ein Buch oder arbeite ein paar Einführungsbeispiele durch!

maik schrieb:
> Datensatz.Artikel = "";

Ich würde den auch auf null setzen und nicht auf leer, null ist NICHT 
der leere String!
Εrnst B✶ schrieb:
> Bin jetzt kein C#-Profi,

Ich auch nicht, aber eigentlich kann man von einem null Objekt keine 
Methode aufrufen, das führt zu einer Nullpointer Exception.

Wenn man null erwartet, muss man darauf prüfen.
Man kann sich natürlich eine Methode definieren, die das macht und die 
50 mal aufrufen und muss nicht 50 mal if schreiben, wenn die aufrufenden 
Stellen gleich sind.
Gast
Tipparbeit sparst du dir indem du den Inhalt der Zelle vorher einer 
temporären Variablen zuweist, diese dann prüfst und dann konvertierst. 
Um das if wirst du nicht drum herum Kommen wenn du sauber bleiben 
willst.

Oder du benutzt dieses Konstrukt wirst dich aber irgendwann fragen warum 
das nötig ist
Convert.ToString(cell.Value);
Gast
Habe die EPPlus.dll gerade mal "ausprobiert".

currentWorksheet.Cells[1,1].Text wäre übrigens noch eine Alternative, 
wenn du sowieso nur mit Strings weiterarbeiten möchtest.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.