使用POI低版本的jar包,导入excel时类型不匹配报错,优化方式
使用场景:如题,在导入报表时,导入cell类型错误,一般常见是'字符串'和'数字类型'的问题
原因:cell中的类型无法判断,单独使用getStringvalue或者getNumericValue会报错
解决方法:所以添加以下代码,然后调用cellToString(HSSFRow row,int r)方法即可,无论是数字型、字符串型、布尔型、最后返回的都是字符串型,可直接存到数据库中使用:
1 public String cellToString(HSSFRow row,int r){ 2 String dates = new String(); 3 HSSFCell cell = row.getCell((short)r); 4 if(null!=cell){ 5 switch(cell.getCellType()){ 6 case HSSFCell.CELL_TYPE_NUMERIC: 7 dates = String.valueOf(((long)cell.getNumericCellValue())).trim();//数字类型 8 System.out.println("NUMERIC="+dates); 9 break; 10 case HSSFCell.CELL_TYPE_STRING: 11 dates = cell.getStringCellValue().trim();//字符串类型 12 System.out.println("STRING="+dates); 13 break; 14 case HSSFCell.CELL_TYPE_BOOLEAN: 15 dates = String.valueOf(cell.getBooleanCellValue()).trim();//布尔类型 16 break; 17 default: 18 System.out.print("表中有除数字、字符串、布尔之外的类型 "); 19 break; 20 } 21 22 } 23 return dates; 24 }
poi报错:Invalid header signature
产生场景:这个问题是在使用poi导入excel文件时产生的:
问题原因:excel是从网页下载或者其他第三方软件导出的,所以它的后缀名虽然是xsl,但是它文件头签名仍然是原来的格式,所以poi不能识别,所以pio不能读取它
解决方法:使用excel打开,另存为2003版的excel,再导入就好了。