2 haobinmarshal haobinmarshal 于 2016.01.29 10:09 提问

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

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

由于Excel读取单元格的数据之后会对数值进行校验,当出现精度缺失时校验不通过。因此,向大家请教如何解决这类问题,谢谢!

3个回答

sihaisidui
sihaisidui   2016.01.29 10:20
                    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 = "错误";  
                    }
Royal_lr
Royal_lr   Ds   Rxr 2016.01.29 10:34

直接通过string就能导入进去了

sihaisidui
sihaisidui 好的,谢谢!
接近 2 年之前 回复
rui888
rui888   Ds   Rxr 2016.01.29 10:17

你用String 来存取数据看看 。

sihaisidui
sihaisidui 谢谢啦!
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java开发过程中自己遇到的各种问题汇总(连载中)
Java开发过程中自己遇到的各种问题汇总开篇:这篇文章,全权作为自己的一个问题和错误的笔记录,记录着平时开发过程中,遇到的一些问题,以及相应的解决方法,直接就直白的放在这里了,给自己忘记的时候看看,做个小总结,也给大家借鉴! 开发常见问题 1、项目编码方式乱码解决 a、MyEclipse:右键单击项目名称->Properties->Resource->Text file encoding,选择项
Java Web 开发过程中的问题
1.  .jsp 文件放到 webroot 目录 还是 webroot 下的 WEB-INF  目录下。        webroot 下的jsp 页面可以直接访问, 通过设置过滤器,放在webroot下面的文件也可以实现不能直接访问。       web-inf 下的jsp 不能直接访问。 TomCat 服务器下的WEB-INF文件夹是一个非常安全的文件,在页面中不能直接访问其中的
java开发过程中遇到的问题(持续更新)
1、java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory  打算使用slf4j替换spring默认日志出现此错误 解决办法:需要添加桥接入器,jcl-over-slf4j     org.slf4j     jcl-over-slf4j     1.7.12
常见Java开发过程中遇到的问题及其解决办法
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/XXX/XXX/dataproxy/service/DataProxyMain : Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native Meth
软件开发过程中遇到的问题(Java 、JavaScript)
此篇记录Sommer在学习、使用Java做软件开发过程中遇到的各种棘手问题。 1. 安装的jdk\lib文件夹下没有tools.jar文件 原因:安装jdk过程中会让你选择jdk和jre的安装目录,如果你设置成一样的话jre\lib下的jar文件会覆盖jdk\lib的jar文件,导致tools.jar丢失。 解决方法:将这两个安装路径设成不一样的就行啦。 2. 运行
c++开发过程中遇到的问题及解决方案
问题一: 1>JForm.obj : error LNK2019: 无法解析的外部符号 "public: virtual __thiscall JFC::JForm::~JForm(void)" (??1JForm@JFC@@UAE@XZ),该符号在函数 "public: virtual void * __thiscall JFC::JForm::`scalar deleting des
代码调试过程中容易遇到的问题
前两天身体有些不舒服,也没写啥新文章,昨天下了一天的雨,今天阳光明媚,空气也很新鲜,心情大好。 继翻译为什么输出是String而不是Object,今天先写一下调试方面的东西。java中自带的函数调试是assert,也就是断言,是在java1.4引入的,下面回顾一下什么是断言。 断言(Assertions)是在Java 1.4引入的,到现在仍然是Java语言最有用并且最重要的附加功能之一。断言(
在JAVAWeb开发中遇到的问题汇总
Question 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ... 通常遇到这种问题的原因在于:sql语句写错 我当时是因为在java中delete * fr
自己开发过程中遇到的问题及解决办法
<br />1. myeclipse+hibernate+junit 在进行测试时出现invalid project specified对话框<br />原因:你的工程可能是复制过来的。而你改名字时前面的一个空格没去掉。<br />2.用hibernate的schemaExport来生成表格及显示建表语句时,为什么建表语句还是在一行显示 <br />原因:在hibernate的配置文件中没有配置fromat_sql属性应该这样配置:<property name=”format_sql”>true</prop
初学者在java学习中常见的30个问题
本文回答了30个JAVA入门级初学者的常见问题。如我可以用%除以一个小数吗? a += b 和 a = a + b 的效果有区别吗? 声明一个数组为什么需要花费大量时间? 为什么Java库不用随机pivot方式的快速排序? 1.2 基本数据类型 Q. 为什么 -0/3 结果是 0,而 -0.0/3.0 结果是 -0.0?(注意后边的结果0带负号) A. 在Java里,整数是用补码