日期:2014-05-17  浏览次数:20769 次

poi导入excel到数据库
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定义为文本,这不友好。请教高手这个一般怎么解决的?

------解决方案--------------------
一点建议:从Excel读出时,能用字符表示的尽可能表示成字符,这样写入数据库时方便
------解决方案--------------------
如果该字段不需要进行计算的话,
你可以将EXCEL中那列的值的格式设置为文本,数据库中设置字段类型为string,读取的时候利用getStringCellValue()来读就行了