解决:java处理excel中取值的常见问题

前几天做了个从报表中取值然后赋给对象插入数据库的工作,由于报表中字段非常多,类型各种都遇到,出现了不少问题,还花了不少时间改错,加以记录以供查阅:

1. Double型表示金额的字段
有些excel中的金额会有逗号分隔每三位,获取单元格的值为String并不能正常转成Double,解决方法:去掉字符串里的英文逗号。

Double.valueOf(tempCellString.trim().replace(",",""));

2.Double型表示为百分号的字段

同1一样字符串无法正常转成Double,如“6.8%”,解决方法同上,去掉字符串里的%

3.Date型字段存入数据库值过大的问题
因为我遇到的数据库对Date型日期的长度要求是8,而报表中并不会有人乖巧地写成我想要的格式,多加一个斜杠或是点都会超出8字节长度,解决方法:对字段进行日期格式化:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");//8字节
YourObject.setDate(sdf.format(tempCell.getDateCellValue());

4.将字符串转变为Number
有些字段为了用起来更加方便,数据库设计成了一位数字的类型,比如一些描述状态、是与否、长期与短期这样的值确定唯二且不容易变的属性,要将字符串进行判断,再加以赋值,我还刚刚实习,所以很多代码都是从模仿开始接近标准,对于这类Flag种类的属性值,还要注意将你想表达的list存于配置文件或定义在顶部,将来万一要更改也一目了然。

private static final List DATA_FLAG = Arrays.asList("是","否");
public void myMethod(...){
    if(tempCellString.trim().equals(DATA_FLAG.get(0))){
                    standBookInfoPo.setDataFlag("1");
                }else if(tempCellString.trim().equals(DATA_FLAG.get(1)))
                    standBookInfoPo.setDataFlag("2");
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值