2016-04-29 16 views
0

私はSXSSFWorkbookとSXSSFSheetオブジェクトを使用しています。私はさらに変更のために再びそれを読んで/ロードしていたファイルへの書き込みの後Apache POI&SXSSF:常に行数0

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

:私は、Excelファイルに成功し書き込むことができています。ここで問題は、getLastRowNum()で行数を取得しようとすると、結果として常に0が返されます。ここにコードがあります:

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()); 

結果は0です! イテレータを使って私自身のメソッドを作成しようとしましたが、同じ結果が得られます。

エラーメッセージはありません。シート名(sheet.getSheetName())をチェックすると、Excelファイルには単純な行が多数含まれていますが、適切な数の行は戻されません。それは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()); 

のために働いている

+0

作成したばかりのファイルに書き込んでいないと動作しません。以前に作成した行の数が表示されますが、既存のファイルから読み込もうとしている場合は表示されません。 – clex

答えて

1

このコードスニペットは、私が必要とする結果を返します。私はSXSSFオブジェクトを推測します(例えば、SXSSFWorkbookは何らかの理由で適切なメソッドを持っていますが、読み込みには適していません)。

+0

これを確認できますか? – clex