项目内用到java解析Excel的功能,我的问题有两个,向大家请教:
1、用jxl只能支持读取office2003及office以前的版本,不支持office2007之后的版本读取;
2、用poi虽然能同时支持office2003和office2007之后的版本,但是poi在读取Excel的过程中会出现精度缺失的问题,如:Excel单元格中的数据原本是12,但是POI的方法读取出来之后是11.99999999999。
由于Excel读取单元格的数据之后会对数值进行校验,当出现精度缺失时校验不通过。因此,向大家请教如何解决这类问题,谢谢!
开源一个可以支持原生图表、图片,透视表,超大文档读写等高阶功能的基础库 Excelize: https://github.com/xuri/excelize
switch(cellType) {
case Cell.CELL_TYPE_STRING: //文本
cellValue = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_NUMERIC: //数字、日期
if(DateUtil.isCellDateFormatted(cell)) {
cellValue = fmt.format(cell.getDateCellValue()); //日期型
}
else {
DecimalFormat df = new DecimalFormat("#");
//System.out.println("type666=="+df.format(cell.getNumericCellValue()));
//cellValue = String.valueOf(cell.getNumericCellValue()); //数字
cellValue =df.format(cell.getNumericCellValue());
}
break;
case Cell.CELL_TYPE_BOOLEAN: //布尔型
cellValue = String.valueOf(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_BLANK: //空白
cellValue = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_ERROR: //错误
cellValue = "错误";
break;
case Cell.CELL_TYPE_FORMULA: //公式
cellValue = "错误";
break;
default:
cellValue = "错误";
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。