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