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

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

       想要得到其他类型就要自己做转换

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值