开发者社区> 问答> 正文

java读写Excel过程中遇到的问题

项目内用到java解析Excel的功能,我的问题有两个,向大家请教:
1、用jxl只能支持读取office2003及office以前的版本,不支持office2007之后的版本读取;
2、用poi虽然能同时支持office2003和office2007之后的版本,但是poi在读取Excel的过程中会出现精度缺失的问题,如:Excel单元格中的数据原本是12,但是POI的方法读取出来之后是11.99999999999。
由于Excel读取单元格的数据之后会对数值进行校验,当出现精度缺失时校验不通过。因此,向大家请教如何解决这类问题,谢谢!

展开
收起
蛮大人123 2016-05-27 14:44:14 3857 0
2 条回答
写回答
取消 提交回答
  • github.com/xuri

    开源一个可以支持原生图表、图片,透视表,超大文档读写等高阶功能的基础库 Excelize: https://github.com/xuri/excelize

    2021-12-10 17:19:01
    赞同 2 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪
         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 = "错误";  
                        }
    2019-07-17 19:17:52
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载