Prüfen ob Zelle in Excel leer ist funktioniert nicht (Apache POI)

sharkattack

Mitglied
Hallo zusammen

Ich bin neu hier im Forum und habe erst vor kurzem mit Java angefangen. Da ich Daten aus einem Excel Dokument auslesen möchte, habe ich mir Apache POI heruntergeladen. Ich habe folgenden Code, der aber leider nicht funktioniert und ich weiss einfach nicht warum. :)
Java:
public static void main(String[] args) { 
        int startReihe = 58;
        int startZelle = 1;
      
        JFileChooser chooser = new JFileChooser();
        int eingabe = chooser.showOpenDialog(null);
      
        if(eingabe == JFileChooser.APPROVE_OPTION) {
          
            try {              
                HSSFWorkbook rechnung = new HSSFWorkbook(new FileInputStream(chooser.getSelectedFile()));
                HSSFSheet blatt = rechnung.getSheetAt(0);
              
                Row reihe = blatt.getRow(startReihe);
                Cell zelle1 = reihe.getCell(startZelle);
              
                CellType type = zelle1.getCellTypeEnum();
              
                if (type == CellType.BLANK) {
                    System.out.println("Zelle ist leer");
                }       
                rechnung.close();
            } catch(Exception e) {
              
            }
        }  
    }

Ich möchte damit überprüfen ob die gewählte Zelle leer ist und falls sie leer ist etwas ausführen. Allerdings funktioniert der Befehl if (type == CellType.BLANK) nicht und ich weiss nicht warum. Wenn ich in die gewählte Zelle im Excel Dokument zum Beispiel etwas reinschreibe und dann dasselbe mit if (type == CellType.STRING) mache, funktioniert es ohne Probleme. Was mache ich falsch?
Für Hilfe wäre ich euch wirklich sehr dankbar, ich habe schon alles mögliche ausprobiert, aber nichts scheint zu funktionieren.

LG
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
Und hast du auch schon mal kontrolliert welchen CellType deine Cell hat wenn nicht BLANK? ;)

Hinweis: Ein leere catch-Block ist immer schlecht! Gib die Exception aus, sonst bemerkst du nie wenn ein Fehler passiert und erschwerst dir die Suche!
 

sharkattack

Mitglied
Vielen Dank euch beiden für die schnellen Antworten.
@Thallius
Meinst du das so?
Java:
String zellenwert = zelle1.getStringCellValue();
             
                if (zellenwert.length() == 0) {
                    System.out.println("Zelle ist leer");
                }
So funktioniert es leider auch nicht. Oder habe ich es falsch gemacht? Ich bin leider noch Anfänger.;)

@Kababär
Ich habe es mal so probiert:
Java:
if (type == CellType.BLANK || zelle1 == null) {
                    System.out.println("Zelle ist leer");
                }
Hast du es so gemeint? Leider funktioniert das auch nicht.
 
Zuletzt bearbeitet von einem Moderator:

Kababär

Top Contributor
Dann würde ich mal über fen Zelltyp für String gehen und gängige Dinge prüfen wie isEmpty() und null.

Kannst ja auch mal einen Switch case aufbauen und gucken welchen Typ deine Zelle hat.
 

sharkattack

Mitglied
@Joose und @Kababär
Ich habe jetzt die Typen _NONE, BLANK, BOOLEAN, ERROR, FORMULA, NUMERIC und STRING durchprobiert, aber nichts scheint zu funktionieren. Danke auch für den Hinweis zum leeren Catch Block. Zuerst würde ich aber gerne herausfinden können ob eine Zelle leer ist.
So habe ich es auch noch versucht, geht aber auch nicht:
Code:
String zellenwert = zelle1.getStringCellValue();
               
                if (zellenwert.isEmpty()) {
                    System.out.println("Zelle ist leer");
                }
Dann habe ich auch noch folgendes versucht, was leider auch nicht funktioniert:
Code:
if (type != CellType.NUMERIC) {
                    System.out.println("Zelle");
                }
 

Kababär

Top Contributor
Und
Code:
if (zellenwert.trim().isEmpty()) {
                    System.out.println("Zelle ist leer");
                }

funktioniert auch nicht?

Das ist sehr seltsam. Debugge mal durch und guck dir die Zelle mal, um den CellType rauszufinden.
Oder hänge ein
Code:
System.out.println(zelle1.getCellType());
dran
 

Joose

Top Contributor
@Joose und @Kababär
Ich habe jetzt die Typen _NONE, BLANK, BOOLEAN, ERROR, FORMULA, NUMERIC und STRING durchprobiert, aber nichts scheint zu funktionieren.
Lass dir doch einfach den CellType ausgeben, damit du weißt welcher es ist. Oder soltest du eine IDE verwenden, dann nutze den Debugger.
Java:
Cell zelle1 = reihe.getCell(startZelle);
CellType type = zelle1.getCellTypeEnum();
System.out.println(type);

Bist du dir überhaupt sicher das dein Code so weit ausgeführt wird? Und eben nicht eine Exception fliegt, welche von dir geschluckt wird!

Danke auch für den Hinweis zum leeren Catch Block. Zuerst würde ich aber gerne herausfinden können ob eine Zelle leer ist.
Das ist schnell gefixed indem du einfach nur e.printStackTrace() schreibst.
 

sharkattack

Mitglied
Vielen Dank für eure Hilfe. Ich habe das e.printStackTrace() hinzugefügt, danke. Folgendes wird ausgegeben:
java.lang.NullPointerException
at rechnungen.test.main(test.java:35) (in Linie 35 ist folgender Code: CellType type = zelle1.getCellTypeEnum();)
Ich habe auch gerade mal getestet die betreffende Zelle als Text oder Zahl zu formatieren, aber leer zu lassen, dann funktioniert es. Mit dem Befehl System.out.println(type) wird dann BLANK ausgegeben.
Kann es sein, dass es am Dokument liegt? Ich habe nämlich nur LibreOffice installiert und habe damit das Dokument von .xlsx nach .xls umgewandelt.
 

Thallius

Top Contributor
Naja mein Reden. Sicherheitsabfragen braucht kein Mensch. Und wir stellen hier wer weiß was für Vermutungen an. Teste doch einfach erstmal ob es die Reihe überhaupt gibt bevor du sie weiter benutzt. Es ist einfach schlechter Code davon auszugehen dass Methoden immer einen Wert zurückliefen den man erwartet. Solcher Code ist später eine tickende Zeitbombe.
 

sharkattack

Mitglied
@Thallius
Danke für deinen Beitrag. Allerdings verstehe ich nicht ganz, was du mit "Teste doch einfach erstmal ob es die Reihe überhaupt gibt bevor du sie weiter benutzt" meinst, da die Reihe und die Zelle im Dokument ja existiert. Wie würdest du denn dieses Problem lösen? Tut mir Leid, dass ich die Sicherheitsabfrage nicht von Anfang an im Code hatte, aber ich bin eben noch Anfänger.

@Joose
Danke für deine Antwort und den Link. Wie würdest du so ein Problem dann lösen? :) Oder muss ich dann immer zuerst die Zellen im betreffenden Dokument formatieren?
 

Joose

Top Contributor
Danke für deinen Beitrag. Allerdings verstehe ich nicht ganz, was du mit "Teste doch einfach erstmal ob es die Reihe überhaupt gibt bevor du sie weiter benutzt" meinst, da die Reihe und die Zelle im Dokument ja existiert. Wie würdest du denn dieses Problem lösen?

In dem du überprüfst ob dir die Methoden getRow bzw. getCell ein Objekt oder null zurückliefern.
 

sharkattack

Mitglied
OK, ich glaube, so langsam verstehe ich es. Vielen Dank euch allen für die Hilfe. Warum die Zelle als nicht definiert gilt, verstehe ich allerdings immer noch nicht, da sie ja existiert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Inhalt einer array zelle prüfen? Java Basics - Anfänger-Themen 2
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
Fiedelbambu Prüfen von Komma stelle beim Taschenrechner Java Basics - Anfänger-Themen 5
sserio Prüfen, ob eine Zahl eine periodische Zahl ist Java Basics - Anfänger-Themen 20
I Auf vollen Monat prüfen? Java Basics - Anfänger-Themen 22
A Dateiname auf Vorkommen prüfen Java Basics - Anfänger-Themen 29
I Prüfen, ob Anzahl an Monate ein Jahr ergeben Java Basics - Anfänger-Themen 4
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
W Klasse existiert prüfen Java Basics - Anfänger-Themen 5
Q Prüfen ob Zahl als Summe von Potenzen dargestellt werden kann. Java Basics - Anfänger-Themen 20
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
M Array auf Primzahlen prüfen Java Basics - Anfänger-Themen 7
K Wie String prüfen ob drei mal das gleiche Zeichen vorkommt? Java Basics - Anfänger-Themen 7
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
X Zwei Dimensionales Array prüfen Java Basics - Anfänger-Themen 1
B Prüfen, ob Zeit Überschreitung Java Basics - Anfänger-Themen 2
B Sudoku prüfen Java Basics - Anfänger-Themen 13
M Prüfen auf null ohne NPE Java Basics - Anfänger-Themen 1
X Array auf Leerstellen prüfen Java Basics - Anfänger-Themen 1
FelixN Prüfen, ob ein 2D-Array rechteckig ist Java Basics - Anfänger-Themen 42
C Erste Schritte JComboBox Einträge auf Duplikat prüfen Java Basics - Anfänger-Themen 4
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
C Array auf Null-Inhalte prüfen Java Basics - Anfänger-Themen 9
B Prüfen, ob Country Code in Europa ist? Java Basics - Anfänger-Themen 24
L Prüfen ob Fax (Tif-Datei) vollständig angekommen ist Java Basics - Anfänger-Themen 15
O Datenstruktur auf SET prüfen in O(n) Java Basics - Anfänger-Themen 32
O Einzelne Bits umwandeln und prüfen Java Basics - Anfänger-Themen 23
U Mehrfacheingabe auf bestimmte Parameter prüfen Java Basics - Anfänger-Themen 8
B Prüfen, ob Datum2 der gleiche Tag ist wie Datum1 Java Basics - Anfänger-Themen 10
Dimax Erste Schritte String Eingabe Prüfen Java Basics - Anfänger-Themen 11
S char auf buchstabe/zeichen prüfen Java Basics - Anfänger-Themen 1
S Array doppelter Wert prüfen Java Basics - Anfänger-Themen 7
B Prüfen, ob es schon einen Termin gibt in einem Zeitraum Java Basics - Anfänger-Themen 5
K Linux Speicherplatz mit Java prüfen Java Basics - Anfänger-Themen 4
O Array nach gleichen Zahlen prüfen und ausgeben Java Basics - Anfänger-Themen 6
G Compiler-Fehler Auf Anagramm prüfen Java Basics - Anfänger-Themen 1
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert Input/Output Prüfen wie oft etwas eingegeben wurde Java Basics - Anfänger-Themen 2
K Operatoren 2D Int Array auf Null-Referenzen prüfen Java Basics - Anfänger-Themen 18
C Klassen Reguläre Ausdrücke auf Gleichheit prüfen Java Basics - Anfänger-Themen 5
M Erste Schritte Java prüfen ob eine der Möglichkeiten erfüllt ist Java Basics - Anfänger-Themen 2
R Auf Nachkommastellen prüfen. Java Basics - Anfänger-Themen 2
P Argumente auf plausibilität prüfen... Java Basics - Anfänger-Themen 8
F LimitedQueue auf Datum prüfen Java Basics - Anfänger-Themen 6
B Passwort prüfen bis eindeutig - while Schleife? Java Basics - Anfänger-Themen 11
Tommy Nightmare Variable auf mehrere Ungleichheiten prüfen Java Basics - Anfänger-Themen 18
B String mit Emailadresse prüfen Java Basics - Anfänger-Themen 11
E 2D Arrays auf Ungleichheit prüfen! Java Basics - Anfänger-Themen 5
MrSnake Prüfen ob TitledPane schon besteht Java Basics - Anfänger-Themen 2
B Serial Key prüfen -> String mit privatem Key und dann abgleichen; Summe = 0 Java Basics - Anfänger-Themen 8
N Compiler-Fehler Iban prüfen Java Basics - Anfänger-Themen 7
J Prüfen ob Arrays nur mit einem Wert belegt sind Java Basics - Anfänger-Themen 3
M String prüfen Java Basics - Anfänger-Themen 7
E Prüfen ob Sammlung gesetzt wurde - Lebensmittelsammlung Java Basics - Anfänger-Themen 8
H Zufällig generierte Zahlen auf Eingabe prüfen Java Basics - Anfänger-Themen 5
S Prüfen ob bestimmter Ordner geöffnet ist (Windows XP) Java Basics - Anfänger-Themen 5
Ruvok Prüfen ob bestimmtest Element existiert im Array Java Basics - Anfänger-Themen 11
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
W char-Array auf bestimmte Zeichen prüfen Java Basics - Anfänger-Themen 10
S String auf Pallindromeigenschaft prüfen Java Basics - Anfänger-Themen 15
AssELAss Datums-Objekt prüfen ob im gleichen Monat? Java Basics - Anfänger-Themen 5
Screen Input/Output Wie prüfen ob Stream1 in Stream2 enthalten ist (on-the-fly) ? Java Basics - Anfänger-Themen 5
P Seite auf Inhalt prüfen Java Basics - Anfänger-Themen 2
I Prüfen ob Webseite existiert Java Basics - Anfänger-Themen 3
Z Inputs prüfen Java Basics - Anfänger-Themen 6
G Textdatei auf Dubletten prüfen Java Basics - Anfänger-Themen 8
I Prüfen von zwei Listen Java Basics - Anfänger-Themen 1
K zwei Rechtecke auf Berührung prüfen Java Basics - Anfänger-Themen 2
G String auf Format prüfen Java Basics - Anfänger-Themen 3
J Eingabewert übergeben und prüfen von showInputDialog Java Basics - Anfänger-Themen 4
L 6stellige Zufallszahlen erzeugen & auf einzigartigkeit prüfen Java Basics - Anfänger-Themen 3
S Array befüllen & auf doppelte werte prüfen Java Basics - Anfänger-Themen 6
M Prüfen, ob Zeichen eine Zahl ist Java Basics - Anfänger-Themen 3
M Punkt auf eine Farbe prüfen Java Basics - Anfänger-Themen 8
C Datentypen Prüfen of eine Zahl Quadratzahl ist Java Basics - Anfänger-Themen 2
K Eindimensionalen Array prüfen Java Basics - Anfänger-Themen 5
M Konstruktor auf null prüfen, Arrays Java Basics - Anfänger-Themen 9
O Prüfen ob ein String den selben Namen hat wie eine Booleanreihe? Java Basics - Anfänger-Themen 17
J Arrays prüfen und über if Bedingung ausgeben Java Basics - Anfänger-Themen 15
B Interface Generics: prüfen ob Interface deklariert wird Java Basics - Anfänger-Themen 18
L Erste Schritte Einträge in ArrayList prüfen Java Basics - Anfänger-Themen 4
S OOP long prüfen Java Basics - Anfänger-Themen 5
H Prüfen, ob jpg image schon vorhanden ist, bevor es geladen wird Java Basics - Anfänger-Themen 13
L Eine ArrayList auf gleiche Inhalte prüfen Java Basics - Anfänger-Themen 10
Rayo Eingelesene Ascii Zahlen wie normale Zahlen prüfen Java Basics - Anfänger-Themen 4
K HashMap auf leere Key-Value-Paare prüfen Java Basics - Anfänger-Themen 14
N Prüfen ob Objekt existiert Java Basics - Anfänger-Themen 6
I Mehrere ArrayLists mit einer for( : ) Schleife auf Inhalt prüfen Java Basics - Anfänger-Themen 6
A Prüfen ob Datei existiert Java Basics - Anfänger-Themen 9
G Verfügbare Clients prüfen ohne ping Java Basics - Anfänger-Themen 12
P JSP Werte übergeben und prüfen Java Basics - Anfänger-Themen 4
A Anfängerfrage: Zahlformat prüfen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben