我使用SXSSFWorkbook和SXSSFSheet对象。我能够成功写入excel文件:
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文件有许多简单的行。 / p>
答案 0 :(得分:2)
适用于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不适合阅读,尽管他们出于某种原因有适当的方法。