2016-04-29 8 views
0

Ich verwende SXSSFWorkbook und SXSSFSheet Objekte. Ich bin erfolgreich in die Excel-Datei schreiben:Apache POI & SXSSF: Anzahl der Zeilen immer 0

FileOutputStream fos = new FileOutputStream(fileName); 
wb.write(fos); 
fos.close(); 
wb.dispose(); 

Nach dem Schreiben in die Datei Ich bin Laden/es wieder für weitere Änderungen zu lesen. Hier ist das Problem, wenn ich versuche, die Anzahl der Zeilen mit getLastRowNum() zu bekommen, bekomme ich immer 0 als Ergebnis. Hier ist ein Stück Code:

SXSSFWorkbook wb = null; 

    try { 
     wb = new SXSSFWorkbook(new XSSFWorkbook(new FileInputStream(fileName))); 
    } catch (FileNotFoundException e) {e.printStackTrace(); 
    } catch (IOException e) {e.printStackTrace();} 

    SXSSFSheet sheet = wb.getSheet(sheetName); 
    System.out.println(sheet.getLastRowNum()); 

Ergebnis ist 0! Ich habe versucht, meine eigene Methode mit dem Iterator zu erstellen, aber das gibt mir das gleiche Ergebnis.

Ich habe keine Fehlermeldungen und wenn Sie den Namen des Blattes (sheet.getSheetName()) überprüfen, gibt es den richtigen Namen, aber nicht die richtige Anzahl von Zeilen, obwohl die Excel-Datei viele einfache Zeilen hat.

+0

Es funktioniert nur, wenn ich nicht in die Datei schreibe, die ich gerade erstellt habe. Wenn ich versuche, die Zeile zu bekommen Nummer vor dem Schreiben funktioniert es (ich erhalte die Anzahl der Zeilen, die ich gerade erstellt habe), aber nicht Wenn ich versuche, von einer vorhandenen Datei zu lesen – clex

Antwort

1

Es ist für XSSFWorkbook

XSSFWorkbook workbook = null; 
try { 
    workbook = new XSSFWorkbook(new FileInputStream(fileName)); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
XSSFSheet sheet = workbook.getSheet(sheetName); 
System.out.println(sheet.getLastRowNum()); 

Dieser Code-Schnipsel gibt das Ergebnis muss ich arbeiten. Ich denke, die SXSSF-Objekte (zB SXSSFWorkbook sind nicht zum Lesen geeignet, obwohl sie aus irgendwelchen Gründen die entsprechenden Methoden haben.

+0

Können Sie das bestätigen? – clex