1. 数值类型处理
通过POI取出的数值默认都是double,即使excel单元格中存的是1,取出来的值也是1.0,这就造成了一些问题,如果数据库字段是int,那么就会wrong data type,所以需要对数值类型处理。
这么处理后,单元格中的小数没有变化,如果是整数,也会取到整数。
注:由于电子表格只能支持15位数值的显示,当数值大于15位时会造成数据丢失,所以对于处理大于15位的学号身份证号等数值信息,建议以text格式存储,在读取的时候:
2. 日期类型处理
很遗憾,POI对单元格日期处理很弱,没有针对的类型,日期类型取出来的也是一个double值,所以同样作为数值类型。
通过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());
2. 日期类型处理
很遗憾,POI对单元格日期处理很弱,没有针对的类型,日期类型取出来的也是一个double值,所以同样作为数值类型。
Cell cell = null;// 单元格
Object inputValue = n

在使用POI处理Excel时,数值会被默认转为double,可能导致与数据库字段类型冲突。对于int字段,需要进行类型转换。此外,POI的日期处理较弱,日期类型也会以double表示。可以通过特定的格式判断日期类型并转换为Timestamp。对于自定义日期格式,需额外处理。本文介绍了POI处理各种单元格类型的策略。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



