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