Excel數據導入實現列表清單式excel數據的導入與更新,支持的功能有:
需要了解的限制有:
需要了解的功能術語有:
功能入口
創建/管理excel中每個sheet頁的導入規則,用于多次導入規則相同的excel數據。
一個excel文件對應一個excel導入模板,excel文件中的sheet頁對應模板中的一個導入規則。
值域范圍
可選值列表的定義,用于驗證excel中某一列的數據必須在指定的可選值列表內,目前僅支持字符串類型。
異常數據日志管理
查看導入異常日志,并可以導出導入異常的數據、及異常原因。
出現在異常數據日志中的前置條件:Excel導入模板中需要設置“異常處理規則”為繼續執行。
演示數據準備
1、在demo庫中的執行附件中的“測試表及數據.sql”,這個腳本導入兩張表:(學校相關行政單位)和(學校名稱維表)。導入成功后進入,將新增的表加入到數據源管理中("管理""系統管理""數據源"""""-"同步")。
2、演示要導入的excel數據“表1-3學校相關行政單位.xls”。
新建Excel導入模板
下面以新建一個“演示帶參數的導入模板”為例,詳細說明每一項的配置。該示例實現為每個學校導入、更新行政單位及其負責人。
Excel數據如下:
目標表結構如下:
其中學校代碼,需要根據用戶選擇的值導入,實現如下:
1、點擊新建Excel導入模板
2、進入Excel導入模板編輯界面
3、進入規則編輯界面
行號:通過設置行號的形式設置起始行。出現字符:通過設置Excel中指定列開始出現指定字符設置起始行。行號:通過設置行號的形式設置結束行。出現字符:通過設置Excel中指定列開始出現指定字符設置結束行。直到空行:遇到空行終止導入。
回滾:設置為出現校驗異常時,回滾整個sheet中數據的導入,并拋出碰到的第一個校驗異常原因。選擇了回滾,異常日志中并不會記錄所有的異常數據及原因,因為回滾意味著遇到第一個校驗異常時,直接回滾,跳出導入該sheet。
若當前數據源不支持事務,則無法回滾數據,如、。導入文件時,系統會自動檢測當前數據源是否支持事務,若不支持則會彈出提示窗告知用戶,相應提示如下:
b. 繼續執行:設置為出現校驗異常時,繼續執行導入下一條數據,并將這條數據寫入到異常日志,供后面下載查看異常原因。
全量:把數據庫中的表中原有的數據刪除,重新導入數據。增量:在數據庫中的表原有的數據基礎下繼續導入數據。列設置
不綁定:執行導入時,該列不插入值。綁定excel列:綁定excel中指定列數據。綁定excel單元格:綁定excel中指定單元格數據。綁定參數:綁定參數,該參數為公共設置中定義的參數,選擇綁定參數后,執行導入時,導入界面會顯示該參數,用戶導入前需要先選擇參數的值再執行導入,這樣這列導入的值就是用戶所選的參數值,這里學校代碼選擇參數"學校名稱",其中的學校名稱參數是下拉框參數,數據源是,備選值是:“ as code, as name from ",默認值是" as code, as name from limit 1”。使用固定值:綁定固定值,用戶輸入一個固定值。使用JAVA類:綁定java類,系統內置了唯一id和系統時間兩個常用的類,用戶可通過擴展包,實現接口.daq.. ,并注冊java類,詳細請見。唯一id:32位長的唯一id。系統時間:執行導入時的系統時間。按文件綁定
校驗設置
擴展設置
4、 保存模板
點擊 保存 ,彈出“保存Excel導入模板”對話框,輸入名稱及描述,點擊確認 保存模板。
批量導入使用規則
"批量導入"和"異常處理規則"兩個按鈕需要配合使用excl保存時檢測到錯誤,配合實際例子對邏輯描述如下:
假如,現在有1086行數據需要導入,前1000條稱為【批次1】,后續的86條稱為【批次2】
1. 開啟批量+異常做回滾處理:
· 如批次1里的數據出現異常,回滾批次1,并且后續批次不導入。
· 如批次2里的數據出現異常,回滾批次2,并且后續批次不導入,但批次1的數據已經被提交。
2. 開啟批量+異常做繼續執行處理:
共插入1085行,跳過錯誤的1行。
3. 關閉批量+異常做回滾處理:
全部回滾。
4. 關閉批量+異常做繼續執行處理:
共插入1085行,跳過錯誤的1行。
執行導入Excel數據
新建值域范圍
下面以新建“單位職能列表”為例,詳細說明每一項的配置。
1、點擊新建值域范圍,選擇數據源
2、進入值域范圍范圍編輯界面:
SQL:通過SQL的方式設置值域的可選值列表。
靜態列表:通過手動設置值列表,本例選擇這種方式。
批量導入:選擇靜態列表后激活,可導入UTF-8編碼的文本格式文件,每一行代表一個值,如:
3、點擊保存,保存值域范圍。
異常日志數據管理
查看導入異常日志,并可以導出導入異常的數據、及異常原因。
出現在異常數據日志中的前置條件:Excel導入模板中需要設置“異常處理規則”為繼續執行。
應用示例演示帶參數的導入模板
請見“”。
演示靜態列表值域范圍
值域范圍的新建和下拉框參數的新建非常相像,但比下拉框參數更簡單。
請見“”。
演示帶值域范圍驗證的導入模板
該示例實現為每個學校導入、更新行政單位及其負責人。Excel數據如下:
目標表結構如下:
其中學校代碼,需要根據用戶選擇的值導入,單位職能只有:學生管理、教學管理、質量監控、其他四個可選值。實現步驟如下:
1、新建“單位職能列表”值域范圍,詳見“”。
2、點擊新建Excel導入模板。
3、點擊列設置,設置列映射。
4、點擊“單位職能”那一行的校驗設置,設置值域范圍校驗,點擊 確定。
5、點擊保存,彈出保存對話框,輸入名稱“演示帶值域范圍驗證的導入模板”,保存excel導入模板。
6、雙擊“演示帶值域范圍驗證的導入模板”執行導入,選擇文件“表1-3學校相關行政單位 - 值域范圍驗證.xls”驗證值域范圍校驗。
7、下載異常數據
1)如果提示“下載異常數據失敗”,原因:模板文件不存在,請編輯模板,上傳模板文件。請重新編輯改Excel模板,上傳模板文件。
2)然后點擊右下角的保存,就會顯示成:
3)上傳模板后,關閉模板,點擊“異常數據日志管理”,可以看到剛導入的異常數據。
4)點擊“下載異?!眻D標,下載異常數據。
否則可以看到導出的異常數據excl保存時檢測到錯誤,顯示值域范圍驗證失敗。
演示綁定自定義java類的導入模板
該示例實現為每個學校導入、更新行政單位及其負責人。Excel數據如下:
目標表結構如下:
其中學校代碼,需要根據用戶選擇的值導入,唯一id需要根據學校代碼和單位號組合而成,實現步驟如下:
1)新建擴展包“”,.xml中設置="",獨立開發擴展包時,為了正常編譯,需要將.jar放到擴展包的lib-目錄(打包時不需要打包到擴展包)。
2)新建行政單位ID類“.demo.”
.demo;
.daq..;
.daq..;
.daq..;
.sf.json.;
.util.;
class {
@
( , ,
) {
xxdm = .("", true); //學校代碼
dwh = .("C_DWH"); //單位號
if(!.(xxdm) && !.(dwh)){
xxdm + "_" + dwh;
}
null;
}
}
2)新建類".demo.",注冊自定義JAVA類,名為"學校行政單位id"
.demo;
.daq.e;
..;
class {
/** */
= new ();
/**
*
* @ e
*/
() {
;
}
@
void () {
e.().("學校行政單位id","學校行政單位id" , new ());
}
}
4)加入擴展包,重新啟動服務器。
5)點擊新建Excel導入模板,添加導入規則。
6)點擊列設置,設置列映射。其中的“唯一id”選擇綁定JAVA類,并選擇“學校行政單位id”。
點擊保存,彈出保存對話框,輸入名稱“演示綁定自定義java類的導入模板”,保存excel導入模板。
7)雙擊該模板執行導入,選擇“表1-3學校相關行政單位.xls”。
8)到數據庫中看結果:
擴展接口說明
請見“Excel數據導入_類文檔注釋”。
附件:測試表及數據.sql
原始文檔: