目前我是在JAVA中导出了ORACLE的数据到EXCEL,然后对EXCEL中的数据进行修改后再导回到ORACLE 问题:
在导回时,如何判断字段的类型,因为在导出数据的时候字段为string型,在EXCEL中修改后(输入数字),导回时该字段就变成double型了,所以这里用cell.getStringCellValue()或cell.getNumericCellValue()读取就会出错。
有人说用org.apache.poi.hssf.usermodel.HSSFCell.CELL_TYPE_FORMULA判断,但不太会用。
因为第一次用POI,很多东西都不熟悉,有知道的朋友麻烦告知一下,越详细越好,谢了先。
在导回时,如何判断字段的类型,因为在导出数据的时候字段为string型,在EXCEL中修改后(输入数字),导回时该字段就变成double型了,所以这里用cell.getStringCellValue()或cell.getNumericCellValue()读取就会出错。
有人说用org.apache.poi.hssf.usermodel.HSSFCell.CELL_TYPE_FORMULA判断,但不太会用。
因为第一次用POI,很多东西都不熟悉,有知道的朋友麻烦告知一下,越详细越好,谢了先。
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC :
result = String.valueOf(cell.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_STRING :
result = cell.getRichStringCellValue().getString();
break;
case HSSFCell.CELL_TYPE_FORMULA :
result = cell.getCellFormula();
break;
}
private static String getCellFormatValue(HSSFCell cell)
{
String cellvalue = "";
if (cell != null)
{
// 判断当前Cell的Type
switch (cell.getCellType())
{
// 如果当前Cell的Type为NUMERIC
case HSSFCell.CELL_TYPE_NUMERIC:
case HSSFCell.CELL_TYPE_FORMULA:
{
// 判断当前的cell是否为Date
if (HSSFDateUtil.isCellDateFormatted(cell))
{
// 如果是Date类型则,取得该Cell的Date值
Date date = cell.getDateCellValue();
// 把Date转换成本地格式的字符串
cellvalue = cell.getDateCellValue().toLocaleString();
}
// 如果是纯数字
else
{
// 取得当前Cell的数值
double num = new Double((double)cell.getNumericCellValue());
cellvalue = String.valueOf(myformat.format(num));
}
break;
}
// 如果当前Cell的Type为STRIN
case HSSFCell.CELL_TYPE_STRING:
// 取得当前的Cell字符串
cellvalue = cell.getStringCellValue().replaceAll("'", "''");
break;
// 默认的Cell值
default:
cellvalue = " ";
}
}
else
{
cellvalue = "";
}
return cellvalue;
}