最近正在做oa,需求需要匯入匯出excel ,功能和方法使用起來挺簡單,做起來發現型別問題比較坑,自己稍微封裝了一下,
對於不想匯入的字段
自定義乙個註解,在實體類中的屬性上標註,相應的excel中也不該有該字段
有一點不好的是:excel中欄位順序需要和實體類中屬性順序一致,且有自定義註解的屬性不應該出現在excel中
有時間我會對擴充套件性和通用性做進一步封裝和處理
這裡 註解名為noexport 是因為之前寫匯出的時候命名,額 就沒有改了
自定義標籤
/**
* 自定義標籤 : 標註了的物件不匯出匯入
* @author huang
* */
@target(elementtype.field)
@retention(retentionpolicy.runtime)
public @inte***ce noexport
使用
public string includeemp(multipartfile multfile ) throws exception
listdeplist = new arraylist<>();
//獲取匯入的職工的集合
if ( wb.getsheet("department表")!=null ) }
匯入功能類
celltype
value
備註cell_type_numeric
數值型0
cell_type_string
字串型
1cell_type_formula
公式型2
cell_type_blank空值3
cell_type_boolean
布林型4
cell_type_error錯誤5
public class importexcel
// 得到總行數
int rows = sheet.getlastrownum();
for ( int i = 1 ; i <= rows ; i ++ )
if ( row == null )
cell cell = row.getcell(k);
switch (cell.getcelltype()) else if ( field.gettype()==string.class )
} else
}field.set(t, integer.parseint(str) ) ;
} else if ( field.gettype()==string.class )
}break;
}// 字串型別
case cell.cell_type_string : else if ( field.gettype()==integer.class ) else
break;
}//空值的情況 可以拋異常 也可以 設空值
case cell.cell_type_blank :
}//以下 為 以實體類中 屬性為基準
// if ( row.getcell(k)==null )else
// if ( cell.getcelltype()==hssfcell.cell_type_numeric )
// }else if ( field.gettype()==date.class )
// if ( cell.getcelltype()==hssfcell.cell_type_string )
// }else
// }
// }
// }
}list.add(t);
} catch (numberformatexception e) catch (securityexception e) catch (illegalargumentexception e) catch (illegalacces***ception e) catch (instantiationexception e) catch (parseexception e)
}return list;
}}
poi匯入匯出excel
org.apache.poigroupid poiartifactid 3.14 beta1version dependency public private string headtextname 列頭 標題 名 private string propertyname 對應欄位名 private ...
POI實現Excel匯入
第一步 將excel表轉換成list其中 exceldto 屬性全部設定成string 便於自定義註解正則校驗 第二步 設定自定義註解 1 長度校驗註解 2 正則校驗註解 3 不能重複 第三步 編寫校驗方法返回錯誤資料 錯誤資料list 可匯入資料list 1.匯入依賴 org.apache.poi...
POI匯入匯出Excel
public class excelutils sheet sheet null row row null cell cell null list new arraylist 遍歷excel中所有的sheet for int i 0 i wb.getnumberofsheets i 遍歷當前shee...