專利名稱:一種基于配置方式的Excel通用導入方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機領(lǐng)域,更具體的說,涉及一種Excel文件的通用導入方法,用于解決不同Excel格式的數(shù)據(jù)導入問題。
背景技術(shù):
目前在企業(yè)的日常業(yè)務中,比如需要收集各類數(shù)據(jù)并錄入到管理系統(tǒng)中,尤其是在國際語音業(yè)務中,隨著國際語音批發(fā)業(yè)務運營商不斷增加,產(chǎn)品覆蓋的國家地區(qū)越來越廣,各運營商之間的結(jié)算越來越復雜,粒度越來越小。為了支持成本結(jié)算的準確性,各運營商采用了互相發(fā)布成本費率的方式進行價格交互,其中成本費率是運營商對各個國家方向的報價。這些報價一般為Excel格式,但各個運營商之間的Excel格式不盡相同,而這些數(shù)據(jù)存在時效性,并且數(shù)據(jù)量非常大,所以需要一套通用的Excel導入方式實現(xiàn)不同格式的 Excel數(shù)據(jù)的導入,從而降低業(yè)務人員工作量,并實現(xiàn)快速導入數(shù)據(jù)庫。
發(fā)明內(nèi)容
本發(fā)明的目的是針對需要導入的各種格式的Excel文件,提供一種通用的數(shù)據(jù)導入方法。該方法配置需要支持的Excel模板的文件頭,定義統(tǒng)一接口。在導入時,將Excel 文件所有內(nèi)容組合為容器,根據(jù)文件頭不同獲取不同的實現(xiàn)方式,從而以指定的方式處理相應的數(shù)據(jù)并實現(xiàn)數(shù)據(jù)入庫。本發(fā)明解決上述問題的技術(shù)方案如下步驟I =Action獲取上傳至服務器的上傳文件,解析該上傳文件,把內(nèi)容放置在 Vector容器對象中,如果解析成功,則進入步驟2 ;否則,進入步驟6 ;步驟2 :查詢配置文件中與此上傳文件對應的實現(xiàn)類,如果有對應的實現(xiàn)類,則進入步驟3;否則,進入步驟6;步驟3 :使用實現(xiàn)類對容器對象進行內(nèi)容規(guī)整,生成數(shù)據(jù)對象,如果成功,則進入步驟4;否則,進入步驟6;步驟4 :調(diào)用父類入庫函數(shù)實現(xiàn)數(shù)據(jù)入庫;如果成功,則進入步驟5 ;否則,進入步驟6;步驟5 :返回成功的記錄數(shù),結(jié)束流程;步驟6 :獲取并返回錯誤信息,結(jié)束流程。其中,步驟I中可以具體使用JAVA ExcelAPI (POI)進行解析。步驟2中查詢實現(xiàn)類的過程具體可以為,通過遞歸算法,將該上傳Excel文件的每個Sheet的文件頭與配置文件中的所有文件頭進行匹配,獲取相應的實現(xiàn)類。配置文件包括所涉及的多種Excel文件的配置以及對應的實現(xiàn)類,其中配置中 service的name屬性對應spring中對應的bean的name, sheet_cnt設(shè)置Sheet個數(shù), sheet_head設(shè)置模版表頭格式。步驟4調(diào)用父類入庫函數(shù)實現(xiàn)數(shù)據(jù)入庫具體為,在父類入庫函數(shù)中,對傳入對象進行解析,使用Hibernate進行入庫。本發(fā)明具有以下有益效果用戶無須手工選擇導入方式,由系統(tǒng)自動判斷;不同 Excel模版實現(xiàn)方式隔離,降低不同模版間的耦合;可支持不同Excel的導入,整體架構(gòu)不變;錯誤信息返回可以精確到每條記錄。
圖I為本發(fā)明的Excel通用導入方法的流程圖。圖2為單sheet時的表格模版格式的示例。圖3(a)和(b)分別為多sheet時各個sheet的表格模版格式的不例。
具體實施例方式以下結(jié)合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。本發(fā)明基于配置方式的Excel通用導入方法,如圖I所示,包括如下步驟步驟I :Action獲取上傳至服務器的上傳文件,使用JAVA ExcelAPI (POI)解析,把內(nèi)容放置在Vector容器對象中,如果解析成功,則進入步驟2 ;否則,進入步驟6。步驟2 :查詢配置文件中與此上傳文件對應的實現(xiàn)類,如果有對應的實現(xiàn)類,則進入步驟3 ;否則,進入步驟6。查詢實現(xiàn)類的過程具體可以是,通過遞歸算法,將該上傳Excel 文件的每個Sheet的文件頭與配置文件中的所有文件頭進行匹配,獲取相應的實現(xiàn)類。其中,配置文件中記載了所涉及的多種Excel文件的配置以及對應的實現(xiàn)類。一般,新建excel/config. xml文件時,會做如下配置service的name屬性對應 spring中對應的bean的name, sheet_cnt設(shè)置Sheet個數(shù),sheet_head設(shè)置模版表頭格式。例如,一種單sheet配置的如下
<config>
〈service name=,,importServiceImplWtt,,>
<sheet_cnt> I </sheet—cnt>
<sheet_head>Destinations, Effective Date, Rate(USD),
Dial Code</sheet_head>
〈/service〉
</config>其對應表格模版格式如圖2所示。例如,一種多Sheet配置,例如2個sheet的配置如下
權(quán)利要求
1.一種基于配置的Excel通用導入方法,包括如下步驟步驟I =Action獲取上傳至服務器的上傳文件,解析該上傳文件,把內(nèi)容放置在Vector 容器對象中,如果解析成功,則進入步驟2 ;否則,進入步驟6 ;步驟2 :查詢配置文件中與此上傳文件對應的實現(xiàn)類,如果有對應的實現(xiàn)類,則進入步驟3;否則,進入步驟6;步驟3 :使用實現(xiàn)類對容器對象進行內(nèi)容規(guī)整,生成數(shù)據(jù)對象,如果成功,則進入步驟 4;否則,進入步驟6;步驟4 :調(diào)用父類入庫函數(shù)實現(xiàn)數(shù)據(jù)入庫;如果成功,則進入步驟5 ;否則,進入步驟6 ;步驟5 :返回成功的記錄數(shù),結(jié)束流程;步驟6 :獲取并返回錯誤信息,結(jié)束流程。
2.根據(jù)權(quán)利要求I所述的一種基于配置的Excel通用導入方法,其特征在于步驟I中采用使用JAVA ExcelAPI (POI)進行解析。
3.根據(jù)權(quán)利要求I所述的一種基于配置的Excel通用導入方法,步驟2中查詢實現(xiàn)類的過程具體為,通過遞歸算法,將該上傳Excel文件的每個Sheet的文件頭與配置文件中的所有文件頭進行匹配,獲取相應的實現(xiàn)類。
4.根據(jù)權(quán)利要求I或3所述的一種基于配置的Excel通用導入方法,其特征在于,所述配置文件包括所涉及的多種Excel文件的配置以及對應的實現(xiàn)類,其中配置中service的 name 屬性對應 spring 中對應的 bean 的 name, sheet_cnt 設(shè)置 Sheet 個數(shù),sheet_head 設(shè)置模版表頭格式。
5.根據(jù)權(quán)利要求I所述的一種基于配置的Excel通用導入方法,步驟4調(diào)用父類入庫函數(shù)實現(xiàn)數(shù)據(jù)入庫具體為,在父類入庫函數(shù)中,對傳入對象進行解析,使用Hibernate進行入庫。
全文摘要
本發(fā)明公開了一種基于配置的Excel通用導入方法,包括如下步驟Action獲取上傳至服務器的上傳文件,解析該上傳文件,把內(nèi)容放置在Vector容器對象中;查詢配置文件中與此上傳文件對應的實現(xiàn)類;使用實現(xiàn)類對容器對象進行內(nèi)容規(guī)整,生成數(shù)據(jù)對象;調(diào)用父類入庫函數(shù)實現(xiàn)數(shù)據(jù)入庫。采用該方法,用戶無須手工選擇導入方式,由系統(tǒng)自動判斷;不同Excel模版實現(xiàn)方式隔離,降低不同模版間的耦合;可支持不同Excel的導入,整體架構(gòu)不變;錯誤信息返回可以精確到每條記錄;降低了業(yè)務人員工作量,并實現(xiàn)了不同格式的Excel文件內(nèi)容的快速入庫。
文檔編號G06F17/30GK102609483SQ20121001799
公開日2012年7月25日 申請日期2012年1月19日 優(yōu)先權(quán)日2012年1月19日
發(fā)明者徐超 申請人:北京神州數(shù)碼思特奇信息技術(shù)股份有限公司