Apache 的POI 解析excel时如何获得实际行数
String filePath="C://test.xls";
HSSFWorkbook workbook = null;
try {
workbook = new HSSFWorkbook(new POIFSFileSystem(
new FileInputStream(filePath)));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
HSSFSheet sheetLi=workbook.getSheet("Li");
System.out.println(sheetLi.getLastRowNum());结果一
System.out.println(sheetLi.getFirstRowNum());结果二
System.out.println(sheetLi.getPhysicalNumberOfRows());结果三
1 结果三总是比结果一大一
行数的索引从0开始,结果二显示的是excel左侧显示的实际数字
2 这里的行数并不是实际有数据的行数
当你新建一个sheet还没有添加任何内容时获得的sheetLi为null
同样row 和cell也是null
但是当插入数据后又把内容清除掉时打印的结果并不发生变化,row 和cell仍然是对象就不再是null了
然后当你把实际存在过数据的行全部删掉时,就一切恢复原样和最初新建的效果都是null
所以要是判断实际有数据的行数就要自己来做了
3 单元格的类型
在excel里设置的单元格格式只代表excel里的样式
POI自己的cellType
HSSFCell.CELL_TYPE_NUMERIC 单元格格式是数值可以得到数字和日期的值,如果你设置的小数位为2,比如输入为1,那么excel显示是1.00,但是实际getNumericCellValue()得到的是1.0
HSSFCell.CELL_TYPE_STRING 单元格格式是文本 只能用getStringCellValue()
单元格格式是常规,填文本就是文本,只能得到文本那么填数字的话 可以得到数字和日期的值,字符也不行;特别注意比如填的是1,那么得到的数字是1.0
想要得到其他类型就要自己做转换