Excel匯入校驗工具

2021-10-10 01:50:22 字數 2214 閱讀 2798

1. 需求

專案中excel 匯入匯出框架是用的poi(新專案推薦使用easyexcel),excel匯出比較簡單,比較麻煩的是excel匯入,因為幾乎每個欄位都必須校驗是否合法,所有欄位的校驗都寫在一起的話,**會很亂,特別是字段很多,業務校驗規則有比較複雜的時候,很容易出bug,後續也很難維護。excel匯入,專案中還有乙個需求是,把excel中所有校驗不通過的錯誤資訊一起提示出來,而不是檢查到乙個錯誤就終止讀取,這樣可以提高使用者的效率。所以封裝了乙個校驗和業務分開的excel匯入工具。

2. 實現方案

大致思路是,利用反射將讀取到值賦給對應的字段,其中每個欄位都可以單獨設定乙個校驗介面,校驗通過則賦值,不通過則新增錯誤資訊。

​ 讀取excel值,通過反射賦給對應的字段

/**

* @param sheet excel**頁

* @param columnconfiglist 實體類字段配置列表

* @param tclass 實體類型別

* @param * @return

*/public

excelimportdata

read

(sheet sheet, list

columnconfiglist, class

tclass)

for(

int i =

1; i < count; i++)}

else}if

(excelimportdata.

getflag()

== excelimportdata.success)

}catch

(illegalacces***ception e)

catch

(nosuchfieldexception e)

catch

(instantiationexception e)

}return excelimportdata;

}

校驗介面,每個字段單獨設定

// 校驗介面

public

inte***ce

iexcelvalidator

3. 主要類設計

具體**分析,後續有時間再補。

4. 使用demo

引入依賴

>

>

com.github.chocolatecwgroupid

>

>

excelvalidateartifactid

>

>

1.0.0version

>

dependency

>

使用示例

commonexcelreader commonexcelreader =

newcommonexcelreader()

; file excelfile =

newfile

("excel檔案路徑");

// 實體類字段配置,與excel**的列一一對應,可使用configbuilder類生成,陣列的順序即**列的順序

list

columnconfiglist =

newcolumnconfig.configbuilder

(new

string

).setvalidator

("testpropertyone"

, commonvalidator.mobilevalidator)

// 設定欄位的校驗器,key為欄位名

.build()

; excelimportdata

excelimportdata = commonexcelreader.

read

(excelfile, columnconfiglist, testexcelentity.

class);

if(excelimportdata.

getflag()

== excelimportdata.success)

else

5. github 位址

好用記得給star!

Excel批量匯入工具(註解形式)

工具類 eexeltool public class exceltool else if filename.endswith xls else array read book catch exception e poi 3.9乃自動關閉,故而無book.close 方法 return array 將...

基於JXL的Excel資料匯入工具

寫這東西主要是前段時間專案中有類似的需求,覺得匯入excel也是乙個比較常用的功能,所以進行了簡單的封裝 功能介紹 1.乙個簡單的利用jxl匯入excel的工具 2.資料集的獲取方式支援jdbc 內部利用record構建兩種 3.僅支援字元型別 數值型別 日期型別資料的匯入 附件中的jar可以引入直...

簡單的Excel匯入匯出工具

支援多sheet匯出匯入 1.建立模型 data excelsheet sheet 判斷題 title 判斷題 public class questionjudgeeo 複製 2.匯出 test public void export else questionjudgeeo.setscore i j...