Apache POI .getCell() error, java.lang.NullPointerException Nicht Lesen kann-Zelle wenn Sie leer
Habe ich Probleme kürzlich mit Apache POI .getCell () - Methode für Excel-Dateien. Wenn ich versuche, umzusetzen Cell newCell = Blatt.getRow(rowNumber).getCell(spalteanzahl) oder etwas ähnliches, ich bekomme immer den Fehler
Exception in thread "main" java.lang.NullPointerException
at ExcelWriter.getWorkbook(ExcelWriter.java:80)
at Gui2.<init>(Gui2.java:93)
at Main.main(Main.java:24)
welche Punkte zu der Linie ich die Umsetzung der .getCell () - Methode, wenn die Zelle den Wert null. Ich habe code, der herausfinden soll, wenn die Zelle null ist, und dann etwas drucken, wenn das ist wahr, aber es scheint, als ob die Zelle leer ist, führt zu einem Fehler mit dem Programm. Dies geschieht nur in einigen Fällen jedoch, und ich habe herausgefunden, dass wenn ich ein Blatt und eine for-Schleife erstellen Sie eine neue Zelle in jeder Zeile, die ich Lesen kann eine leere Zelle, und bestimmen Sie, es ist leer. Wenn ich dann allerdings geben Sie einen Wert in eine beliebige Zelle in diesem Blatt, und dann versuchen, Sie zu Lesen eine andere null-Zelle, bekomme ich die Fehlermeldung wieder. Ich verstehe nicht, warum, ich bekomme diese Fehlermeldung nur wenn ich versuche zu Lesen, null-Zellen, aber muss ich eine Schleife in mein Programm. Hier ist ein Ausschnitt von meinem code und was den Fehler verursacht.
public void getWorkbook(String fileName)
{
try
{
existingFile = new FileInputStream(new File(fileName));
workbook = new XSSFWorkbook(existingFile);
Sheet newSheet = workbook.getSheet("Test3");
//createSheet("Test3", workbook);
Cell newCell = newSheet.getRow(1).getCell(1);
if(newCell == null)
{
System.out.println("Null");
}
else if(newCell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC)
{
System.out.println("Number");
}
//System.out.println(newCell.getStringCellValue());
}
catch (FileNotFoundException e) //Couldn't find file
{
e.printStackTrace();
}
catch (IOException e) //Couldn't create workbook
{
e.printStackTrace();
}
}
Nur klar zu sein, die Zelle B2, die im code erwähnten, ist leer. Aber A1 ist nicht, aber wenn ich lese A1 druckt das system "Nummer" wie es sein soll.
- Ich vermute, dass die ganze Zeile 2 ist leer. Also diese Zeile wird nicht gespeichert werden, in die Excel-Datei und
newSheet.getRow(1)
zurückNULL
. Sie haben, dies zu überprüfen. Versuchen Sie, die erste Reihe, dann überprüfen, ob es nichtNULL
- und nur wenn nicht, versuchen Sie, die Zelle. - Dies funktionierte perfekt. Ich danke Ihnen so sehr für Ihre Hilfe!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie in der Apache POI Javadocs,
Sheet.getRow(num)
null zurückgeben kann, wenn die Zeile noch nie benutzt wurde und daher noch nicht in die Datei geschrieben wurdenAls in der Apache POI-docs auf Durchlaufen der Zeilen und Zellen, wenn Sie wollen, um eine Schleife über alle Zeilen, dann Holen einer bestimmten Spalte, müssen Sie etwas tun, wie: