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