您的位置:首页 > 其它

POI 解析excel时sheet的实际行数,数字问题

2010-01-05 17:17 441 查看
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

想要得到其他类型就要自己做转换
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: