FileInputStream fis = new FileInputStream(xlsx);   //文件流
XSSFWorkbook workbook = new XSSFWorkbook(fis);  //创建工作簿
XSSFSheet sheet = workbook.getSheetAt(0);  //工作表,0表示一个表
XSSFRow row = null;  //excel的行
XSSFCell cell = null; //列
int totalRow = sheet.getLastRowNum(); //excel总记录数
long sfz= 0;      //excel中身份证的类型,但是也有身份证后面是字母的啊,问题就是这里不知道如何定义
String sql= "insert into yjsm_hd(sfz) values(?)";
for(int i=1;i<=totalRow;i++){  
      row=sheet.getRow(i);  
      cell=row.getCell((short) 0);
      sfz=(long)cell.getNumericCellValue();  //如果上面定义的类型错了,这里就取不到excel中的值
//sfz=cell.getStringCellValue().toString();
      pst=conn.prepareStatement(sql);
      pst.setString(1,sfz);  
      pst.execute();
}求解决方案》

解决方案 »

  1.   

    按String进行处理,cell.getStringCellValue()
      

  2.   

    String sfz= 0;      //excel中身份证的类型,但是也有身份证后面是字母的啊,问题就是这里不知道如何定义......
    sfz=cell.getStringCellValue();
      

  3.   

    如果定义成String,取值的时候sfz=cell.getStringCellValue()会报错
      

  4.   

    取到表格中的数据也就是身份证的时候判断一下,如果有字母就用string,没有就用long,这样应该可以
      

  5.   


    不能直接用getString或者其他get,因为你不能确定你单元格是什么类型,一般处理方法是在读取单元格的值之前,自定义一个方法,去判断这个单元格是什么类型。是string就getString是int就getInt,得到目标值后再转换成你要的类型。
      

  6.   


    import org.apache.poi.ss.usermodel.DataFormatter;
    ...
    String value = new DataFormatter().formatCellValue(cell);