Poi判断单元格的数据类型问题
写了一个关于Excel数据写入数据库的程序,下面是把读Excel文件的相关代码:public List<SAV_TMP> readSAV_TMP(File xlsFile){
       List<SAV_TMP> list=new ArrayList<SAV_TMP>();
       try{
        FileInputStream fln=new FileInputStream(xlsFile);//创建一个文件流
        HSSFWorkbook readWorkBook=new HSSFWorkbook(fln);//获取工作簿
              HSSFSheet readSheet=readWorkBook.getSheet("Sheet1");//获取第一张工作表,Sheet1表名
              HSSFRow readRow=readSheet.getRow(0);//数据起始行
              HSSFCell readCell=readRow.getCell((short)0);//单元格
              System.out.println("第一个单元格是:"+readCell.getStringCellValue());
              int count=readSheet.getPhysicalNumberOfRows();//获得工作表中一共有多少条数据
              for(int i=2;i<count;i++){//Excel中的第三行起是要读入的数据
               HSSFRow readRow1=readSheet.getRow(i);
               String acno=readCell.getStringCellValue();
               String rctl=readCell.getStringCellValue();
               String cunm=readCell.getStringCellValue();
               double acbl=readCell.getNumericCellValue();
               double rjye=readCell.getNumericCellValue();
现在报出异常:
java.lang.NumberFormatException : You cannot get a numeric value from a String based cell
应该就是这两句的问题
double acbl=readCell.getNumericCellValue();
double rjye=readCell.getNumericCellValue();
我的数据库中acbl和rjye就是Double类型的,Excel表中是数值型的
我不清楚怎样进行类型转换,向大家请教!!!谢谢
------解决方案--------------------  for(int i=2;i<count;i++){//Excel中的第三行起是要读入的数据
 HSSFRow readRow1=readSheet.getRow(i);
 String acno=readCell.getStringCellValue();
 String rctl=readCell.getStringCellValue();
 String cunm=readCell.getStringCellValue();
 double acbl=readCell.getNumericCellValue();
 double rjye=readCell.getNumericCellValue();
你难道没有发现你都操作的是readCell么?readCell的值肯定只能是一种类型。
------解决方案-------------------- 得判断单元格格式类型,这是我原来写的,参考一下:
Java code
private Object getCellData(Cell cell, FormulaEvaluator formula) {
    if(cell == null) {
        return null;
    }
    switch (cell.getCellType()) {
    case Cell.CELL_TYPE_STRING:
        return cell.getRichStringCellValue().getString();
    case Cell.CELL_TYPE_NUMERIC:
        if (DateUtil.isCellDateFormatted(cell)) {
            return cell.getDateCellValue();
        } else {
            return cell.getNumericCellValue();
        }
    case Cell.CELL_TYPE_BOOLEAN:
        return cell.getBooleanCellValue();
    case Cell.CELL_TYPE_FORMULA:
        return formula.evaluate(cell).getNumberValue();
    default:
        return null;
    }
}
------解决方案--------------------  
首先我们要获取单元格。如果你对excel中的数据非常确定。为了简单你可以写死。如下面: Java code
 for(int i=2;i<rowCount;i++){//Excel中的第三行起是要读入的数据
              HSSFRow readRowi=readSheet.getRow(i);
              HSSFCell cell=readRowi.getCell((short)0);
               String acno=readCell.getStringCellValue();
cell=readRowi.getCell((short)1);
  String rctl=readCell.getStringCellValue();
cell=readRowi.getCell((short)2);
  String cunm=readCell.getStringCellValue();
cell=readRowi.getCell((short)3);
  double acbl=readCell.getNumericCellValue();
cell=readRowi.getCell((short)4);
  double rjye=readCell.getNumericCellValue();              
              }
------解决方案--------------------  写死有时也会出现一列有两种数据类型的情况. 探讨  得判断单元格格式类型,这是我原来写的,参考一下: Java code private Object getCellData(Cell cell, FormulaEvaluator formula) {     if(cell == null) {         return null;     }     switch (cell.getCellType()) {     ……