2016-04-29 359 views
0

我使用SXSSFWorkbook和SXSSFSheet对象。我能够成功地写入Excel文件:Apache POI&SXSSF:行数始终为0

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

进一步变化再写入我加载的文件/文件看完之后。这是问题,当我尝试使用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文件,有很多简单的行。

+0

只有当我没有写入刚刚创建的文件时才会工作如果我尝试获取行编号之前它的工作原理(我收到我刚刚创建的行数)但不是如果我尝试从现有文件中读取 – clex

回答

1

据工作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()); 

这段代码返回结果,我需要。我猜SXSSF对象(例如SXSSFWorkbook不适合阅读,虽然他们有合适的方法出于某种原因)

+0

你能证实吗? – clex