java读写Excel过程中遇到的问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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 2923 0
2 条回答
写回答
取消 提交回答
  • xuri
    github.com/xuri

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

    2021-12-10 17:19:01
    赞同 1 展开评论 打赏
  • 蛮大人123
    我说我不帅他们就打我,还说我虚伪
         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
    赞同 展开评论 打赏
问答分类:
问答标签:
相关产品:
问答排行榜
最热
最新
相关电子书
更多
JAVA 应用排查全景图
立即下载
Java工程师必读手册
立即下载
Java应用提速(速度与激情)
立即下载