紧急求助:poi 读取Excel 整数出现 .o

william548934 2009-12-26 04:04:58
google,百度了好长时间没能找到好的解决办法,希望这里高手相助!
问题是这样的:
Excel的数据如果是整数123,那么用cell.getNumericCellValue()得到的结果会有123.0
目前我试过的解决办法
1,用indexOf(".")查找,然后将“.”以及后面的0去掉。。。
2,

if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
double d = cell.getNumericCellValue();
if (d - (int) d < Double.MIN_VALUE) {
System.out.print("int" + " ");
} else {
System.out.print("double" + " ");
}

}

但是如果Excel某一列的数据如下:
A B C
1 1.1 1
2 1.1 1.1
3 1.1 1.1G
4 1.1 1.0.G
5 1.1 1G.00
5 1.1 1.00
.............................................
这样A列B列可以解决,但是C列这样的数据就无法解决了。。。
请教啦!!!!

...全文
1243 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
heheshinesky 2010-05-06
  • 打赏
  • 举报
回复
我的问题和你相反,我想把123.0写入excel,但是写入后就变成了123,我就想要123.0
,一直也没有找到解决的办法,请各位高手帮忙。
loveunittesting 2009-12-31
  • 打赏
  • 举报
回复
poi这栋西用过好几年了,这不是Poi的问题。你分析方法有问题
william548934 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 crazylaa 的回复:]
引用 9 楼 william548934 的回复:
引用 8 楼 yys79 的回复:
这是啥鸟问题,既然是数字你格式化不就得了吗?用DecimalFormat,pattern为#.#就完了,费那个劲干什么?想不明白

汗,用过POI没?没用过别瞎嚷嚷。。。。

哎,楼主,我可以瞎猜下不:
1。你先按字符串来,取到后看看有没有点(.),有的话能不能格式化成double,不能,OK,它事String。
2。能够格式化成double,看看.后面是不是都是0,如果是0,把它当整数,或者按你这个字段要求的小数点位数格式化。
3。没点又能格式化成double,当int。

纯属瞎猜,不合适就算啦。
[/Quote]
呵呵,谢啦,我查了很多资料,我觉得这是poi的一个bug,不过我用程序进行判断,解决了,,
crazylaa 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 william548934 的回复:]
引用 8 楼 yys79 的回复:
这是啥鸟问题,既然是数字你格式化不就得了吗?用DecimalFormat,pattern为#.#就完了,费那个劲干什么?想不明白

汗,用过POI没?没用过别瞎嚷嚷。。。。
[/Quote]
哎,楼主,我可以瞎猜下不:
1。你先按字符串来,取到后看看有没有点(.),有的话能不能格式化成double,不能,OK,它事String。
2。能够格式化成double,看看.后面是不是都是0,如果是0,把它当整数,或者按你这个字段要求的小数点位数格式化。
3。没点又能格式化成double,当int。

纯属瞎猜,不合适就算啦。
che253604783 2009-12-28
  • 打赏
  • 举报
回复
先读出来,再格式化一下。
william548934 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yys79 的回复:]
这是啥鸟问题,既然是数字你格式化不就得了吗?用DecimalFormat,pattern为#.#就完了,费那个劲干什么?想不明白
[/Quote]
汗,用过POI没?没用过别瞎嚷嚷。。。。
loveunittesting 2009-12-28
  • 打赏
  • 举报
回复
这是啥鸟问题,既然是数字你格式化不就得了吗?用DecimalFormat,pattern为#.#就完了,费那个劲干什么?想不明白
老张-AI 2009-12-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 william548934 的回复:]
引用 5 楼 crazylaa 的回复:
1G.0,这也可以作为数字列输入么?我不懂,就是问下。

我的意思是某一列的信息是不固定的,有可能是整数1,有可能是小数1.0,也有可能是字符串1G.0  。。。那这样就需要判断类型,如果按上面两种方法做,有可能原本是1.0的数据,被转换成了整数1
[/Quote]

..不会了 顶下
william548934 2009-12-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 crazylaa 的回复:]
1G.0,这也可以作为数字列输入么?我不懂,就是问下。
[/Quote]
我的意思是某一列的信息是不固定的,有可能是整数1,有可能是小数1.0,也有可能是字符串1G.0 。。。那这样就需要判断类型,如果按上面两种方法做,有可能原本是1.0的数据,被转换成了整数1
crazylaa 2009-12-26
  • 打赏
  • 举报
回复
1G.0,这也可以作为数字列输入么?我不懂,就是问下。
william548934 2009-12-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gesanri 的回复:]
你是想整数输出的时候不带.0么?转化成字符串并判断调用endsWith方法判断是否以.0,不过这有一个问题,如果excel里面本来就是double型的数据且以.0结尾的话,.0也被去掉了
[/Quote]
恩,我说的就是这个意思啊。。。
william548934 2009-12-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 orphen_lee 的回复:]
直接转换成string型输出
[/Quote]
导入Excel的时候,可以设置单元格格式,但是读取Excel是不行的。。。
gesanri 2009-12-26
  • 打赏
  • 举报
回复
你是想整数输出的时候不带.0么?转化成字符串并判断调用endsWith方法判断是否以.0,不过这有一个问题,如果excel里面本来就是double型的数据且以.0结尾的话,.0也被去掉了
orphen_lee 2009-12-26
  • 打赏
  • 举报
回复
直接转换成string型输出

81,120

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧