1. 数值类型处理
通过POI取出的数值默认都是double,即使excel单元格中存的是1,取出来的值也是1.0,这就造成了一些问题,如果数据库字段是int,那么就会wrong data type,所以需要对数值类型处理。
这么处理后,单元格中的小数没有变化,如果是整数,也会取到整数。
注:由于电子表格只能支持15位数值的显示,当数值大于15位时会造成数据丢失,所以对于处理大于15位的学号身份证号等数值信息,建议以text格式存储,在读取的时候:
通过POI取出的数值默认都是double,即使excel单元格中存的是1,取出来的值也是1.0,这就造成了一些问题,如果数据库字段是int,那么就会wrong data type,所以需要对数值类型处理。
Cell cell = null;// 单元格
Object inputValue = null;// 单元格值
if(!isEmpty(cell) && cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
long longVal = Math.round(cell.getNumericCellValue());
if(Double.parseDouble(longVal + ".0") == doubleVal)
inputValue = longVal;
else
inputValue = doubleVal;
}
这么处理后,单元格中的小数没有变化,如果是整数,也会取到整数。
注:由于电子表格只能支持15位数值的显示,当数值大于15位时会造成数据丢失,所以对于处理大于15位的学号身份证号等数值信息,建议以text格式存储,在读取的时候:
Long id=new Long(cell.toSting());