poi导入excel到数据库:
public static String getCellValue(HSSFCell cell){
String value = null;
//检查列类型
switch(cell.getCellType()){
case HSSFCell.CELL_TYPE_STRING://字符串
value = cell.getRichStringCellValue().getString();
break;
case HSSFCell.CELL_TYPE_NUMERIC://数字
value = new Double(cell.getNumericCellValue()).toString();
break;
case HSSFCell.CELL_TYPE_BLANK:
value = "";
break;
case HSSFCell.CELL_TYPE_FORMULA:
value = String.valueOf(cell.getCellFormula());
break;
case HSSFCell.CELL_TYPE_BOOLEAN://boolean型值
value = String.valueOf(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_ERROR:
value = String.valueOf(cell.getErrorCellValue());
break;
default:
break;
}
return value;
}
这是我的判断单元格类型和转换。
假如导入的excel文件中有个字段:分公司为1010100,在excel中的单元格是数值类型。poi取出后变为1010100.0,而数据库中的是char类型,导入就会报错。因为数据库还有一个字段为money:是double类型,所以不能再getCellValue()方法中DecimalFormat数值类型的数,也不能在excel文件中将分公司1010100定义为文本,这不友好。请教高手这个一般怎么解决的?
public static String getCellValue(HSSFCell cell){
String value = null;
//检查列类型
switch(cell.getCellType()){
case HSSFCell.CELL_TYPE_STRING://字符串
value = cell.getRichStringCellValue().getString();
break;
case HSSFCell.CELL_TYPE_NUMERIC://数字
value = new Double(cell.getNumericCellValue()).toString();
break;
case HSSFCell.CELL_TYPE_BLANK:
value = "";
break;
case HSSFCell.CELL_TYPE_FORMULA:
value = String.valueOf(cell.getCellFormula());
break;
case HSSFCell.CELL_TYPE_BOOLEAN://boolean型值
value = String.valueOf(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_ERROR:
value = String.valueOf(cell.getErrorCellValue());
break;
default:
break;
}
return value;
}
这是我的判断单元格类型和转换。
假如导入的excel文件中有个字段:分公司为1010100,在excel中的单元格是数值类型。poi取出后变为1010100.0,而数据库中的是char类型,导入就会报错。因为数据库还有一个字段为money:是double类型,所以不能再getCellValue()方法中DecimalFormat数值类型的数,也不能在excel文件中将分公司1010100定义为文本,这不友好。请教高手这个一般怎么解决的?
解决方案 »
- 關於Javascript, Java, Jsp 的 Float 小數點問題
- 项目中使用HQL语句LIMIT丢了。
- 好东西分享:JSP多文件上传-绝对好用
- java web开发群18981008
- url传递中文参数的问题?
- 急,我在TEXTPAD 里将JSP 的文件内容做了修改, 可是当我刷新
- 我在eclipse下输入中文注释,为什么都变成了乱码“方块”?
- Jsp+JavaBean+Servlet文件已写好,不知放到tomcat那个路径下
- <jsp:useBean>的问题
- dreamweare MX6里写JSP,有语法高亮,但没有联想提示
- javaweb需要扩展的经验
- ubuntu下jenkins安装插件报错
你可以将EXCEL中那列的值的格式设置为文本,数据库中设置字段类型为string,读取的时候利用getStringCellValue()来读就行了
str = String.valueOf(cell.getNumericCellValue());
if(str.endsWith(".0")) {
str = "'" + str.substring(0, str.lastIndexOf(".")) + "'";
}