欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種通用導入Excel數據的實現方法

文檔序號:6539549閱讀:247來源:國知局
一種通用導入Excel數據的實現方法【專利摘要】本發(fā)明公開了一種通用導入Excel數據的實現方法,包括以下步驟:設置解析模板,獲取記錄開始行號、行級函數信息、單元格字段信息、默認字段信息和自定義函數集合funcList;讀取Excel數據文檔;依次執(zhí)行BeforeSave()函數、默認字段賦值、普通字段賦值、BeforeFunc()函數、FuncList、AfterFunc()函數和AfterSave()函數;把AfterSave()函數中的處理結果提交數據庫;遍歷下一行,直到文件結束;提示用戶導入結果信息。本發(fā)明通過上述原理,實現對Excel文件行級導入,支持枚舉、外鍵字段、支持對單元格字段進行自定義處理、每行特殊處理,支持多表同時導入?!緦@f明】一種通用導入Excel數據的實現方法【
技術領域
】[0001]本發(fā)明涉及數據導入方法,具體涉及一種通用導入Excel數據的實現方法?!?br>背景技術
】[0002]隨著信息技術的發(fā)展,目前許多的智能化平臺都需要采用數據庫存儲各種龐大的過程、結果數據,而很多資料和報表都以EXCEL文件方式輸入、保存、查詢、匯總、導出,因此EXCEL數據的輸入和查詢是非常重要的。而信息化系統(tǒng)項目在上線運行初期,需要將用戶的基礎數據錄入到系統(tǒng)里,這些數據一般都存放在Excel文件中;或是在系統(tǒng)運行期,需要錄入用戶的Excel數據,當這些Excel記錄數過大時,通過系統(tǒng)逐條錄入會花費大量的人力和時間。[0003]而現有的Excel通用導入,基本原理都是將Excel單元格與實體類或數據庫中某個字段進行綁定,一般采用實體類注解或是XML配置文件的方式,而且基本上都只支持單表String字段的導入,無法實現對某個單元格字段的一般特殊處理,如枚舉和外鍵等,也無法實現對某個單元格字段的自定義處理和多表同時導入。【
發(fā)明內容】[0004]本發(fā)明克服了現有技術的不足,提供一種通用導入Excel數據的實現方法,通過在Excel模板中自定義表達式,定義出枚舉、外鍵、函數等單元格,實現對Excel文件行級導入,支持枚舉、外鍵字段、支持對單元格字段進行自定義處理、每行特殊處理,支持多表同時導入。[0005]為解決上述的技術問題,本發(fā)明采用以下技術方案:一種通用導入Excel數據的實現方法,包括以下步驟:(a)設置解析模板,獲取記錄開始行號、行級函數信息、單元格字段信息、默認字段信息和自定義函數集合funcList;(b)處理器讀取Excel數據文檔,從記錄開始行號開始遍歷,執(zhí)行單行導入操作;(C)處理器執(zhí)行BeforeSave()函數;Cd)處理器執(zhí)行默認字段賦值;Ce)處理器執(zhí)行普通字段賦值;Cf)處理器執(zhí)行BeforeFunc()函數;(g)處理器統(tǒng)一執(zhí)行FuncList;(h)處理器執(zhí)行AfterFunc()函數;(i)處理器執(zhí)行AfterSave()函數;(j)處理器把步驟(i)中的處理結果提交數據庫;(k)處理器遍歷下一行,直到文件結束;(I)處理器提示用戶導入結果信息,包括成功數、失敗數、警告數、失敗行號及原因、警告行號及原因。[0006]每一步都是通過反射組裝需要寫到數據庫的實體對象。操作說簡單點就是構建entity對象,執(zhí)行自定義函數func。至于在func里做什么則由二次開發(fā)人員根據實際需要設計。通過4個行級自定義函數和N個字段級自定義函數,二次開發(fā)者可以進行任何維度的自由擴展。其中的行級自定義函數可以在單行導入時期內,通過切面插入4個不同時機的自定義操作。其中的字段級自定義函數可以對不屬于entity的字段進行操作,從而實現了多表同時導入。實現了以對象為基礎,支持對象字段,支持多表導入,支持很高自由度的擴展,克服了現有技術中只支持單表類型的字段,如string和int,只支持單表導入的缺陷。其中的切面插入4個不同時機的自定義操作即是可以同時對四個自定義函數進行操作。[0007]優(yōu)選的,所述的自定義函數集合funcList由二次開發(fā)人員根據功能需要進行開發(fā)。[0008]優(yōu)選的,步驟(a)中設置解析模板分為三行,第一行包括Entity表達式以及四個行級自定義函數BeforeSave()、BeforeFunc()、AfterFunc()和AfterSave();第二行包括單行數據的表達式信息$F;第三行包括defaultValue表達式。四個行級自定義函數為系統(tǒng)申明的四個函數,實現了在一行導入過程中的不同時期插入你想做的事情。[0009]優(yōu)選的,步驟(b)中的單行導入包括以下步驟:(bl)創(chuàng)建Entity表達式;(b2)遍歷此行單元格,Entity字段賦值,遇到字段級自定義函數則放入funclist中;(b3)執(zhí)行funclist;(b4)保存Entity。[0010]優(yōu)選的,所述的表達式信息$F為普通字段、特殊字段或者是公共字段。[0011]優(yōu)選的,所述的行級自定義函數BeforeSave()、BeforeFunc()、AfterFunc()和AfterSave()解析時均通過jave反射找到A,找到對應的F方法,F為通過解析這個表達式獲得的java方法,A為三個參數entity,單元格value和固定參數。[0012]優(yōu)選的,所述的行級自定義函數BeforeSave()、BeforeFunc()、AfterFunc()和AfterSave()的執(zhí)行時機不同。[0013]優(yōu)選的,所述的行級自定義函數BeforeSave()的執(zhí)行時機在單行導入的步驟(bl)和步驟(b2)之間執(zhí)行,BeforeFuncO的執(zhí)行時機在單行導入的步驟(b2)和步驟(b3)之間執(zhí)行,AfterFunc()的執(zhí)行時機在單行導入的步驟(b3)和步驟(b4)之間執(zhí)行,AfterSaveO的執(zhí)行時機在單行導入的步驟(b4)之后執(zhí)行。[0014]與現有技術相比,本發(fā)明的有益效果是:1、本發(fā)明以對象為基礎,支持對象字段,支持多表導入,支持很高自由度的擴展,克服了現有技術只支持簡單類型的字段,如String和int,只支持單表導入的缺陷。[0015]2、本發(fā)明實現對某個單元格字段的一般特殊處理,如枚舉和外鍵等,實現對某個單元格字段的自定義處理和每行的特殊處理。【專利附圖】【附圖說明】[0016]圖1為本發(fā)明的流程框圖;圖2為本發(fā)明的解析模板;圖3為待導入數據示例?!揪唧w實施方式】[0017]下面結合附圖對本發(fā)明作進一步闡述,本發(fā)明的實施例不限于此。[0018]實施例1:如1-3圖所示,本發(fā)明包括以下步驟:Ca)如圖2所示,設置解析模板,獲取記錄開始行號、行級函數信息、單元格字段信息、默認字段信息和自定義函數集合funcList;其中的函數集合funcList根據如圖3中需要導入的表格信息進行如圖2所示的設置,其中的$Entity{}、$BeforeSave{},SAfterSave{}JAfterFunc{}和$F{}括號內設置的信息可根據用戶需要進行不同設置,但各個函數需要保留,如$F{line,name}識別航線信息滬寧線和滬杭線,$F{line,name}識別圖3中的常州工區(qū)和鎮(zhèn)江工區(qū),依次類推解析模板中對應函數分別對導入的整個excel表格中的不同信息模塊進行同時識別。[0019](b)處理器讀取Excel數據文檔,從記錄開始行號開始遍歷,執(zhí)行單行導入操作;(C)處理器執(zhí)行BeforeSave()函數;Cd)處理器執(zhí)行默認字段賦值;Ce)處理器執(zhí)行普通字段賦值;Cf)處理器執(zhí)行BeforeFunc()函數;(g)處理器統(tǒng)一執(zhí)行FuncList;(h)處理器執(zhí)行AfterFunc()函數;`(i)處理器執(zhí)行AfterSave()函數;(j)處理器把步驟(i)中的處理結果提交數據庫;(k)處理器遍歷下一行,直到文件結束;(I)處理器提示用戶導入結果信息,包括成功數、失敗數、警告數、失敗行號及原因、警告行號及原因。[0020]自定義函數集合funcList由二次開發(fā)人員根據功能需要進行開發(fā)。[0021]其中的默認字段表達式為$F{A}.defaultValue(B),其中的A表示字段名,B表示默認值,該表達式表式當前excel每行數據都一樣的字段,此表達式也支持特殊字段,例如:$F{wzresinf0.customcode}.defaultValue(GD_DWD)。其中的普通字段表達式為$F{A},存在于entity內,A表示單元格value對應的字段名,此處支持外鍵。解析時通過java反射將value寫到entity對應的字段上。如果是外鍵則通過value找到對應的id,再將id寫到entity對應的字段上,例如:$F{setloc},$F{deptid.name}。其中的BeforeSave()函數的表達式為$BeforeSave(Α,Β,0..),Α表示包名.類名.方法名,B,C...表示方法固定參數,例如:$BeforeSave{com.jdgm.equipment.service,bds.EquipSetService.startSaveEquipSet},而$BeforeFunc()、$AfterFunc()、$AfterSave()與$BeforeSave()定義相同,只是執(zhí)行時機不同。本發(fā)明通過在Excel模板中自定義表達式,定義出枚舉、外鍵、函數等單元格,可以達到對每行的特殊處理,每個單元格字段的特殊處理,支持多表同時導入和Excel文件行級導入。[0022]實施例2:本實施例在實施例1的基礎上優(yōu)選步驟如下:步驟(a)中設置解析模板分為三行,第一行包括Entity表達式以及四個行級自定義函數BeforeSave()、BeforeFunc()、AfterFunc()和AfterSave();第二行包括單行數據的表達式信息$F;第三行包括defaultValue表達式。通過4個行級自定義函數和N個字段級自定義函數,二次開發(fā)者可以進行任何維度的自由擴展。行級自定義函數可以在單行導入時期內,通過切面插入4個不同時機的自定義操作。字段級自定義函數可以對不屬于entity的字段進行操作,從而實現了多表同時導入。[0023]實施例3:本實施例在上述實施例的基礎上優(yōu)選步驟如下:步驟(b)中的單行導入包括以下步驟:(bl)創(chuàng)建Entity表達式;(b2)遍歷此行單元格,Entity字段賦值,遇到字段級自定義函數則放入funclist中;(b3)執(zhí)行funclist;(b4)保存Entity。能夠更好的實現對某個單元格字段的一般特殊處理和某個單元格字段的自定義處理。[0024]實施例4:本實施例在上述實施例的基礎上優(yōu)選步驟如下:表達式信息$F為普通字段、特殊字段或者是公共字段。行級自定義函數BeforeSave()、BeforeFunc()、AfterFunc()和AfterSave()解析時均通過jave反射找到A(entity,單元格value,固定參數)找到對應的F方法,F為通過解析這個表達式獲得的java方法。行級自定義函數BeforeSave()、BeforeFunc()>AfterFunc()和AfterSave()的執(zhí)行時機不同。[0025]其中的特殊字段的表達式為$F{A}[.enum(B).codetable(B)|.func(B,C,D…)],Enum、codetable、func三者不能共存,當存在enum表達式,表示這是一個枚舉字段,A是字段名,B是枚舉的名稱;當存在codetable表達式,表示這是一個碼表字段,A是字段名,B是碼表的code;當存在func表達式,表示這是一個自定義函數,A是字段名,B是方法名,C,D..是固定參數,與$BeforeFunc()類似,執(zhí)行時機是在每行解析單元格時執(zhí)行一次。實現了處理枚舉、碼表和自定義函數(字段級)。其中的公共字段的表達式為$F{A}.defaultValue(B),A表示字段名;B表示默認值;此表達式支持特殊字段,例如:$F{wzresinf0.customcode}.defaultValue(GD_DWD)。[0026]實施例5:本實施例在上述實施例的基礎上優(yōu)選步驟如下:行級自定義函數BeforeSave()的執(zhí)行時機在單行導入的步驟(bl)和步驟(b2)之間執(zhí)行,BeforeFunc()的執(zhí)行時機在單行導入的步驟(b2)和步驟(b3)之間執(zhí)行,AfterFunc()的執(zhí)行時機在單行導入的步驟(b3)和步驟(b4)之間執(zhí)行,AfterSave()的執(zhí)行時機在單行導入的步驟(b4)之后執(zhí)行。該方法是最佳的執(zhí)行方式,以對象為基礎,支持對象字段,支持多表導入,支持很高自由度的擴展,克服了現有技術只支持簡單類型的字段,如string和int,只支持單表導入的缺陷。[0027]以上僅是本發(fā)明的優(yōu)選實施方式,本發(fā)明的保護范圍并不僅局限于上述實施例,凡屬于本發(fā)明思路下的技術方案均屬于本發(fā)明的保護范圍。應當指出,對于本【
技術領域
】的普通技術人員來說,在不脫離本發(fā)明原理前提下的若干改進和潤飾,應視為本發(fā)明的保護范圍。【權利要求】1.一種通用導入Excel數據的實現方法,其特征在于:包括以下步驟:(a)設置解析模板,獲取記錄開始行號、行級函數信息、單元格字段信息、默認字段信息和自定義函數集合funcList;(b)處理器讀取Excel數據文檔,從記錄開始行號開始遍歷,執(zhí)行單行導入操作;(C)處理器執(zhí)行BeforeSave()函數;Cd)處理器執(zhí)行默認字段賦值;Ce)處理器執(zhí)行普通字段賦值;Cf)處理器執(zhí)行BeforeFunc()函數;(g)處理器統(tǒng)一執(zhí)行FuncList;(h)處理器執(zhí)行AfterFunc()函數;(i)處理器執(zhí)行AfterSave()函數;(j)處理器把步驟(i)中的處理結果提交數據庫;(k)處理器遍歷下一行,直到文件結束;(I)處理器提示用戶導入結果信息,包括成功數、失敗數、警告數、失敗行號及原因、警告行號及原因。2.根據權利要求1所述的一種通用導入Excel數據的實現方法,其特征在于:步驟(a)中設置解析模板分為三行,第一行包括Entity表達式以及四個行級自定義函數BeforeSave()、BeforeFunc()、AfterFunc()和AfterSave();第二行包括單行數據的表達式信息$F;第三行包括defaultValue表達式。3.根據權利要求2所述的一種通用導入Excel數據的實現方法,其特征在于:步驟(b)中的單行導入包括以下步驟:(bl)創(chuàng)建Entity表達式;(b2)遍歷此行單元格,Entity字段賦值,遇到字段級自定義函數則放入funclist中;(b3)執(zhí)行funclist;(b4)保存Entity。4.根據權利要求2所述的一種通用導入Excel數據的實現方法,其特征在于:所述的表達式信息$F為普通字段、特殊字段或者是公共字段。5.根據權利要求3所述的一種通用導入Excel數據的實現方法,其特征在于:所述的行級自定義函數BeforeSave()、BeforeFunc()、AfterFunc()和AfterSave()解析時均通過jave反射找到A,找到對應的F方法,F為通過解析這個表達式獲得的java方法,A為三個參數entity,單元格value和固定參數。6.根據權利要求5所述的一種通用導入Excel數據的實現方法,其特征在于:所述的行級自定義函數BeforeSave()、BeforeFunc()、AfterFunc()和AfterSave()的執(zhí)行時機不同。7.根據權利要求6所述的一種通用導入Excel數據的實現方法,其特征在于:所述的行級自定義函數BeforeSave()的執(zhí)行時機在單行導入的步驟(bI)和步驟(b2)之間執(zhí)行,BeforeFunc()的執(zhí)行時機在單行導入的步驟(b2)和步驟(b3)之間執(zhí)行,AfterFunc()的執(zhí)行時機在單行導入的步驟(b3)和步驟(b4)之間執(zhí)行,AfterSave()的執(zhí)行時機在單行導入的步驟(b4)之后執(zhí)行?!疚臋n編號】G06F17/30GK103838845SQ201410078143【公開日】2014年6月4日申請日期:2014年3月5日優(yōu)先權日:2014年3月5日【發(fā)明者】蔣凱,陳奇志申請人:成都交大光芒科技股份有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
河西区| 巴塘县| 邓州市| 新建县| 美姑县| 仁化县| 紫金县| 东港市| 蕉岭县| 会昌县| 精河县| 莫力| 密山市| 平阳县| 新巴尔虎右旗| 和平县| 大丰市| 靖边县| 明星| 安岳县| 奇台县| 定南县| 天祝| 济宁市| 广东省| 峨山| 汤原县| 中山市| 犍为县| 阳朔县| 新竹县| 泊头市| 安福县| 凤台县| 保康县| 临颍县| 澄江县| 房产| 吉林省| 陕西省| 古交市|