HSSFCell:You cannot get a string value from a numeric cell

【使用场景
使用一个已经编译好的Jar包工具(无源码)对Excel文件做操作,提示下面的错误。


【错误提示
getNumericCellValue
java.lang.NumberFormatException: You cannot get a string value from a numeric cell

at org.apache.poi.hssf.usermodel.HSSFCell.getRichStringCellValue(HSSFCell.java:734)


【分析:

1. POI的使用文档里已经写的很清楚了,明明一个单元格是数字型而想取出字符串来则会报这个错。如果是自己写的工具,倒也简单,从Excel取数据前判断该单元格的类型则分别使用不同的接口即可。可前提是这个程序无法修改,于是只能从Excel文件单元格式下手了。

2. 多次验证(我使用Excel版本2003),Excel里修改的单元格格式与POI认为的单元格格式貌似有差别——我把出问题的单元格的类型修改成数字型也无济于事!最后无意中按下F2(双击应该也可以)进入编辑模式,再按下回车保存后该问题就OK了。

3. 具体原因还是未知,也许跟rettar 在网易里写的这句话(【当对表内的该列数据做修改后,excel将自动修改单元格的格式)有些关系。真的好奇怪,甚至把不会报错的单元格连格式一起拷贝至出错的单元格也无法解决问题。


参考:
1. http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFCell.html#getRichStringCellValue()

2.  http://blog.163.com/rettar@126/blog/static/12165034220098301051285/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值