jar包--POI.jar包使用问题汇总

使用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,再导入就好了。

 

posted @ 2017-02-14 14:04  无言火  阅读(2066)  评论(0编辑  收藏  举报