目前我是在JAVA中导出了ORACLE的数据到EXCEL,然后对EXCEL中的数据进行修改后再导回到ORACLE 问题: 
在导回时,如何判断字段的类型,因为在导出数据的时候字段为string型,在EXCEL中修改后(输入数字),导回时该字段就变成double型了,所以这里用cell.getStringCellValue()或cell.getNumericCellValue()读取就会出错。 
有人说用org.apache.poi.hssf.usermodel.HSSFCell.CELL_TYPE_FORMULA判断,但不太会用。 
因为第一次用POI,很多东西都不熟悉,有知道的朋友麻烦告知一下,越详细越好,谢了先。

解决方案 »

  1.   

    根据Cell Type判断一下就可以了。
    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;
    }
      

  2.   

    以下是将excel内容读取为string类型文本的方法,其中switch (cell.getCellType())段的代码就是判断类型并取值的过程
    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;
        }
      

  3.   

    !不懂( ⊙ o ⊙ )啊.....up一下~