Input/Output NullPointerException with Apache POI

fabipfolix

Mitglied
Hello,
I'm trying to code a little program which uses Excel as a little DB.
But my code which should read the Excel File got a NullPointerException.

Here's my code: (I've imported everything)
Java:
public class DBReader {
    List<Mini> miniList = new ArrayList<Mini>();
  
    public List<Mini> readSheet1() throws FileNotFoundException, IOException{
      
        HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream("DB.xls"));
      
        HSSFSheet sheet = wb.createSheet();
        for(int i=0;i<=sheet.getLastRowNum();i++) {
            System.out.println(i);
            String name = "error";
            double age = 4;
          
            HSSFRow row = sheet.getRow(i);

            if(row.getCell(0).getCellTypeEnum()==CellType.STRING) { //ERROR
              
                name = row.getCell(0).getStringCellValue(); //ERROR if I remove if(row.getCell(0).getCellTypeEnum()==CellType.STRING)
              
            }
            if(row.getCell(1).getCellTypeEnum()==CellType.NUMERIC) {
                age = row.getCell(1).getNumericCellValue();
              
            }
            Mini m = new Mini(name, age);
          
          
            miniList.add(m);
          
        }
    wb.close();
    return miniList;
      
    }
}
 

httpdigest

Top Contributor
In welcher Zeile tritt die Exception denn genau auf? Das siehst du im Stacktrace der Exception.
Ist es die Zeile mit dem Kommentar // ERROR if I remove if(row.getCell(0).getCellTypeEnum()==CellType.STRING)? Und, wenn ja, wieso solltest du die if-Anweisung dadrüber entfernen, die ja gerade prüft, ob der gelesene Wert ein String ist. Das heißt, der Code, so wie du ihn gepostet hast, wirft gar keine Exception?

Generell: Leute, die sagen, "dieser Code wirft eine Exception" sollten IMMER folgende Informationen mitgeben:
- in welcher Zeile tritt die Exception auf (natürlich Zeilennummern übersetzen für den Post oder einfach einen Kommentar über oder hinter die entsprechende Zeile im Code)
- den Exceptiontyp (bei dir ja NPE)
- falls gegeben: die Nachricht der Exception

EDIT: Oh, habe gerade erst das // ERROR hinter der if-Anweisung gesehen.
Schau dir mal https://stackoverflow.com/questions...exception-cannot-read-cell-if#answer-31191178 an.
 
Zuletzt bearbeitet:

fabipfolix

Mitglied
EDIT: Oh, habe gerade erst das // ERROR hinter der if-Anweisung gesehen.
Schau dir mal https://stackoverflow.com/questions...exception-cannot-read-cell-if#answer-31191178 an.
Daran dürfte mein Problem eigentlich nicht liegen, da ich die Zeile Text enthält. Ich erhalte diesen Fehler beim ersten Durchlauf, 5 Zeilen enthalten allerdings die richtigen Information. Dazu kommt, dass es funktioniert hat, bis ich etwas davon unabhängiges geändert habe.

Bei dem gegebenen Beispiel verstehe ich allerdings den Nutzen von Math.max und Math.min nicht.
Von was sind die eingesetzten Zahlen abhänig?
 

httpdigest

Top Contributor
Naja, offensichtlich ist doch entweder row == null oder row.getCell(0) == null. Refactore diese eine Zeile doch erstmal in zwei Zeilen und prüfe dann mit einem Debugger, welche der zwei Fälle null ist.
Bei der SO Antwort ist ja eigentlich nur relevant, dass du (laut der Apache POI Dokumentation und den Benutzungsbeispielen (per Link genannt)) bei Iteration über ein Dokument immer prüfen musst, ob eine Zeile und Zelle null ist.
 

fabipfolix

Mitglied
Wenn ich getRow benutze dann ist row == null. Wenn ich createRow benutze scheint dies zu funktionieren. Dann liegt das nächste Problem allerdings hier:
Java:
  if(row.getCell(0).getCellTypeEnum()==CellType.STRING) {
Deswegen habe ich das ein wenig aufgesplitted und das Problem liegt bei dem Vergleich des CellTypes.

Java:
public List<Mini> readSheet1() throws FileNotFoundException, IOException{
       
        HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream("DB.xls"));
       
        HSSFSheet sheet = wb.createSheet();
        for(int i=0;i<=sheet.getLastRowNum();i++) {
            System.out.println(i);
            String name = "error";
            double age = 4;
           
            Row row = sheet.createRow(i);
            if(row ==null) {
                System.out.println("row=null");
                continue;
            }
            Cell c = row.createCell(0);
            c.setCellType(CellType.STRING);
           
           
           
            if(c.getCellTypeEnum()==CellType.STRING) { //ERROR
               
                name = row.createCell(0).getStringCellValue();
               
            } else { //Wird nur ausgeführt wenn: if(row.getCell(0).getCellTypeEnum()==CellType.STRING) {
                System.out.println("Zeichenkette benötigt");
            }
            if(row.getCell(1).getCellTypeEnum()==CellType.NUMERIC) {
                age = row.createCell(1).getNumericCellValue();
               
            } else {
                System.out.println("nur Zahlen erlaubt");
            }
           
            Mini m = new Mini(name, age);
           
           
            miniList.add(m);
           
        }
    wb.close();
    return miniList;
       
    }
 

httpdigest

Top Contributor
Wieso solltest du denn jetzt einfach createRow() und createCell() benutzen???
Das Sheet enthält offensichtlich tatsächlich keine Daten in der jeweiligen Zeile. Dann bringt es jetzt doch auch nichts, das Sheet einfach zu ändern und eine Zeile und Zelle anzulegen, deren Inhalt ja dann immer noch leer ist.
Kannst du zumindest verifizieren, dass du eventuell einfach Leerzeilen in dem tatsächlichen Excel-Sheet hast? Für solche Leerzeilen erhältst du dann nämlich einfach eine null Row.
 

fabipfolix

Mitglied
Ich wollte einfach mal ausprobieren, ob es so vielleicht funktioniert. Dank deiner Antwort ist mir dann aber aufgefallen, dass ich ja vorher schon das getSheetAt(0) zu createSheet(0) geändert habe (hatte da auch plötzlich einen Fehler, obwohl es vorher funktioniert hat).
Jetzt funktioniert das wieder.
Danke für deine Hilfe!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Input/Output NullPointerException, aber wieso? [Apache POI] Allgemeine Java-Themen 11
C Was bekomme ich eine Nullpointerexception? (Apache POI) Allgemeine Java-Themen 3
Zeppi NullPointerException in einer if-Abfrage Allgemeine Java-Themen 6
T imagej-server NullPointerException Allgemeine Java-Themen 1
L Methoden NullpointerException Allgemeine Java-Themen 5
B OOP Auslöser für NullPointerException Allgemeine Java-Themen 3
I Vererbung Nicht erklärliche NullPointerException Allgemeine Java-Themen 7
Drachenbauer warum bekomme ich hier eine NullPointerException Allgemeine Java-Themen 6
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
P wiedermal NullPointerException Allgemeine Java-Themen 2
kodela NullPointerException Allgemeine Java-Themen 2
L Variablen NullPointerException (RSA) Allgemeine Java-Themen 2
B NullPointerException bei @Inject JSF Allgemeine Java-Themen 0
Arif Probleme mit NullPointerException Allgemeine Java-Themen 2
G String an Arduino senden NullPointerException in PrintWriter Allgemeine Java-Themen 6
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
R NullPointerException Ohne Grund Allgemeine Java-Themen 5
D ByteBuffer getInt NullpointerException Allgemeine Java-Themen 4
S JavaMail - MailSubject,MailFrom,MailDate in String Array speichern NullPointerException Allgemeine Java-Themen 2
T Compiler-Fehler NullpointerException! Allgemeine Java-Themen 7
A Methode ergibt Java NullpointerException. Allgemeine Java-Themen 3
F Socket NullPointerException Bitte um hilfe! Allgemeine Java-Themen 12
L NullPointerException bei Instanzvarialen Allgemeine Java-Themen 3
B Compiler-Fehler NullPointerException beim Auslesen von .lang-Datei Allgemeine Java-Themen 3
I Fehler java.lang.NullPointerException Allgemeine Java-Themen 5
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
H java.lang.NullPointerException Allgemeine Java-Themen 5
L Interpreter-Fehler java.lang.NullPointerException Allgemeine Java-Themen 17
M JSON NullPointerException Allgemeine Java-Themen 5
M NullpointerException Allgemeine Java-Themen 2
L Eclipse NullPointerException Allgemeine Java-Themen 6
M Fitness-Rechner: NullPointerException Allgemeine Java-Themen 7
G Thread erzeugt nicht plausible NullPointerException Allgemeine Java-Themen 7
A java.lang.NullPointerException bei Schleife Allgemeine Java-Themen 3
K Unerklärliche nullpointerexception Allgemeine Java-Themen 6
S javadoc java.lang.NullPointerException Allgemeine Java-Themen 2
K 3Dimensionales Feld - NullPointerException Allgemeine Java-Themen 2
J Compiler-Fehler NullPointerException Allgemeine Java-Themen 12
T Compiler-Fehler NullPointerException bei ADT LinkedTree Allgemeine Java-Themen 31
P Beim sortieren nullpointerexception Allgemeine Java-Themen 12
3 MP3-Finder wirft NullPointerException Allgemeine Java-Themen 13
M NullPointerException MenuItem Allgemeine Java-Themen 7
S Dialog einblenden bei NullPointerException Allgemeine Java-Themen 5
T DefaultTableModel NullPointerException Allgemeine Java-Themen 7
ruutaiokwu NullPointerException auf member, die per konstruktor gesetzt wird (multithread-kontext) Allgemeine Java-Themen 2
B NullPointerException ohne Angabe Allgemeine Java-Themen 5
F NullPointerException aber warum ? Allgemeine Java-Themen 9
F Array NullPointerException Allgemeine Java-Themen 26
B NullPointerException bei Wertzuweisung Allgemeine Java-Themen 3
C NullPointerException Allgemeine Java-Themen 9
MonsterBit java.lang.NullPointerException Allgemeine Java-Themen 2
O NullPointerException (wohl Denkfehler) Allgemeine Java-Themen 5
N Warum nullPointerException? Allgemeine Java-Themen 13
N Generics-NullpointerException Allgemeine Java-Themen 7
J NullPointerException mit HashMap Allgemeine Java-Themen 2
B NullPointerException bei new XStream() Allgemeine Java-Themen 2
J java.lang.NullPointerException bei Threadprogrammierung Allgemeine Java-Themen 9
J NullPointerException bei JasperReports Allgemeine Java-Themen 2
V NullPointerException bei Vector Allgemeine Java-Themen 2
G Warum kommt hier NullPointerException? Allgemeine Java-Themen 3
G NullPointerException Allgemeine Java-Themen 5
R Immer wieder NullPointerException Allgemeine Java-Themen 2
M NullPointerException Allgemeine Java-Themen 4
J Fehler: java.lang.NullPointerException Allgemeine Java-Themen 2
G NullPointerException, aber warum? Allgemeine Java-Themen 10
G NullPointerException problem Allgemeine Java-Themen 30
mhauert NullPointerException bei Zugriff auf JNI Objekt Allgemeine Java-Themen 6
J Folgender Fehler: java.lang.NullPointerException Allgemeine Java-Themen 4
T NullPointerException nach Java Update Allgemeine Java-Themen 4
G NullPointerException Allgemeine Java-Themen 6
H NullPointerException trotz Abfangen von null? Allgemeine Java-Themen 9
H nullPointerException bei [ArrayList<String>.add(.)] Allgemeine Java-Themen 3
H NullPointerException Allgemeine Java-Themen 10
P NullPointerException Allgemeine Java-Themen 8
A NullPointerException, Thread soll Thread steuern Allgemeine Java-Themen 2
MQue Sichtbarkeit/HashMap/NullPointerexception Allgemeine Java-Themen 2
MQue NullPointerException Allgemeine Java-Themen 17
A NullPointerException Allgemeine Java-Themen 15
G java.lang.NullPointerException JFreeChart Allgemeine Java-Themen 5
A NullPointerException Allgemeine Java-Themen 11
G Methode mit Schleifen NullPointerException Allgemeine Java-Themen 2
B Pobleme mit NullpointerException Allgemeine Java-Themen 13
M java.lang.NullPointerException im Chatclient Allgemeine Java-Themen 12
S NullPointerException beim Laden von BMPs Allgemeine Java-Themen 3
B java.lang.NullPointerException Allgemeine Java-Themen 11
M NullPointerException bei Subklasse ohne MediaTracker Allgemeine Java-Themen 12
G Problem mit NullPointerException Allgemeine Java-Themen 5
D NullPointerException wo keine sein sollte. Allgemeine Java-Themen 2
F NullpointerException beim Einlesen einer Datei Allgemeine Java-Themen 13
V Button schließen - NullPointerException Allgemeine Java-Themen 6
V NullPointerException Allgemeine Java-Themen 12
M Apache Proxy Weiterleitung auf Tomcat funktioniert nicht wie gewünscht Allgemeine Java-Themen 1
T Logging mit org.apache.logging.log4j Allgemeine Java-Themen 1
E Ersetzen eines Bildes in der Kopfzeile eines Word-Docx-Dokuments mit Apache POI XWPF Allgemeine Java-Themen 0
H Apache fop -- welche Möglichkeit gibt es um den Fortschritt anzuzeigen (Progressbar) Allgemeine Java-Themen 5
H Apache fop - OutOfMemoryError Allgemeine Java-Themen 10
B Schnittstelle zwischen MySQL und Apache Allgemeine Java-Themen 8
O Wie kann ich in Apache POI (Excel Dateien schreiben) Datumszellen in Excel erzeugen Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben