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
想要得到其他类型就要自己做转换
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
想要得到其他类型就要自己做转换
相关文章推荐
- POI解析Excel,解决长数字变成科学计数法或double的问题
- 关于poi解析word和excel的问题,解析word中的table,获取部分table的行数和列数不正确
- poi解析excel读取日期为数字的问题
- 使用poi做excel导出时解决以文本格式存储的数字问题
- java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式
- poi 解析excel 03与07不兼容问题
- java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式
- java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式
- [打造自己的代码库]ExcelUtil:(POI)解析Excel Sheet 与 String[][][]互转
- 关于POI解析Excel文件(03和07版本不同)的问题
- java--POI解析excel兼容性问题
- POI获取Excel中单元格内容时,如果为数字格式获取类型为double的问题
- poi解析Excel时类型的判断与数字的转换
- 使用poi做excel导出时解决以文本格式存储的数字问题
- poi的 excel 身份证等长数字串 问题
- java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式
- java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式
- 解决POI解析excel出现内存溢出问题
- poi解析excel遇到的问题
- poi 解析excel 03与07不兼容问题