使用POI在进行解析EXCLE文档的时候,单元格中有数字类型,该数字可能是整形,浮点型,也有可能是货币类型,那么这个时候我们如何处理呢?
Apache给我们提供了解析单元格的集中基本格式,其中我们用CELL_TYPE_NUMERIC来用处理读取的单元格为数字类型的数据.并通过cell.getNumericCellValue()得到单元格中的内容,但是该方法获取的数据无论单元格中的是整形还是浮点型均返回的类型是double类型的,这不符合我们的日常所需.这是该如何处理这个问题呢?
我们可以使用DecimalFormat类来解决该问题,排除我们读取到的是日期格式的数据之外,其它数据我们创建一个
DecimalFormat fmt=new DecimalFormat("#.####");对象并使用该对象的fmt.format(cell.getNumericCellValue());将入到的数据格式化,这样我们获取的数据 就正常了,原先单元格里的是什么,取到的就是什么.这里还需要注意一点的是,参数#.####表示格式数字后面带多少精度,若实际精度大于格式化的精度,则多出来的会被四舍五入,
对于日期类型,在解析的时候仍会作为数字类型被CELL_TYPE_NUMERIC接受到,这时我们只需要使用HSSFDateUtil.isCellDateFormatted(cell);这个工具类的方法判断该单元格是否是日期类型即可,若是日期类型,则使用cell.getDateCellValue()来获取数据.该方法返回的是一个日期对象