多并發(fā)大數(shù)據(jù)量環(huán)境下excel數(shù)據(jù)導(dǎo)出方法及其導(dǎo)出裝置制造方法【專利摘要】本發(fā)明公開了一種多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出方法,包括以下步驟:(a)設(shè)置配置文件中的配置信息:所述配置信息包括數(shù)據(jù)導(dǎo)出格式信息、數(shù)據(jù)表格結(jié)構(gòu)信息、每次輸出的數(shù)據(jù)量信息,所述數(shù)據(jù)導(dǎo)出格式為xml格式;(b)解析配置信息;(c)獲取用戶查詢條件;(d)生成數(shù)據(jù)庫(kù)可執(zhí)行語句:根據(jù)用戶查詢條件和每次輸出的數(shù)據(jù)量信息生成數(shù)據(jù)庫(kù)可執(zhí)行語句;(e)數(shù)據(jù)轉(zhuǎn)換與輸出步驟:對(duì)需要導(dǎo)出的數(shù)據(jù)進(jìn)行分批次轉(zhuǎn)換和輸出,每次輸出完畢后釋放內(nèi)存。本發(fā)明將輸出數(shù)據(jù)格式定義為xml格式,支持將具有龐大數(shù)據(jù)量的EXCEL文件分批進(jìn)行導(dǎo)出,每批次導(dǎo)出后都進(jìn)行了一次內(nèi)存釋放,可以大大減小數(shù)據(jù)下載時(shí)對(duì)內(nèi)存的占用?!緦@f明】多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出方法及其導(dǎo)出裝置【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及數(shù)據(jù)導(dǎo)出方法,尤其涉及一種多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出方法及其導(dǎo)出裝置?!?br>背景技術(shù):
】[0002]隨著信息技術(shù)的發(fā)展,目前許多的智能化平臺(tái)都需要采用數(shù)據(jù)庫(kù)存儲(chǔ)各種龐大的過程、結(jié)果數(shù)據(jù),而很多資料和報(bào)表都以EXCEL文件方式保存、查詢、匯總、導(dǎo)出,因此EXCEL數(shù)據(jù)的查詢、導(dǎo)出是非常重要的。[0003]目前,EXCEL數(shù)據(jù)的導(dǎo)出,一般采用POI或JXL兩大編輯Excel文件的開源工具從服務(wù)器導(dǎo)出數(shù)據(jù)到EXCEL格式,然后下載。這種方式最直接和方便,但是當(dāng)需要導(dǎo)出的數(shù)據(jù)量非常大的時(shí)候,由于所有的數(shù)據(jù)都要先存入內(nèi)存再導(dǎo)出,而服務(wù)器內(nèi)存有限,可能會(huì)導(dǎo)致服務(wù)器癱瘓,例如,當(dāng)要導(dǎo)出20萬條數(shù)據(jù)時(shí),這些數(shù)據(jù)占用內(nèi)存可能達(dá)到20M,當(dāng)100人同時(shí)使用此功能時(shí)就會(huì)消耗內(nèi)存2G,如果數(shù)據(jù)量更多和使用的人數(shù)更多,則占用的內(nèi)存更大,有可能導(dǎo)致服務(wù)器崩潰。[0004]目前,也有一些解決方案是在服務(wù)器中生成臨時(shí)文件后下載,這種方式會(huì)產(chǎn)生磁盤文件,影響服務(wù)性能?!?br/>發(fā)明內(nèi)容】[0005]本發(fā)明要解決的技術(shù)問題就在于:針對(duì)現(xiàn)有技術(shù)存在的上述不足,本發(fā)明提供一種多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出方法,該方法不僅支持多并發(fā)大數(shù)據(jù)量環(huán)境下的EXCEL數(shù)據(jù)導(dǎo)出,在導(dǎo)出數(shù)據(jù)時(shí)對(duì)內(nèi)存的占用非常小,本發(fā)明還提供了一種多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出裝置。[0006]為實(shí)現(xiàn)上述目的,本發(fā)明的多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出方法,包括數(shù)據(jù)轉(zhuǎn)換與輸出步驟,該步驟中對(duì)需要導(dǎo)出的數(shù)據(jù)進(jìn)行分批次轉(zhuǎn)換和輸出,每次輸出完畢后釋放內(nèi)存。[0007]作為本發(fā)明的進(jìn)一步改進(jìn),上述多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出方法在數(shù)據(jù)轉(zhuǎn)換與輸出步驟之前還包括以下步驟:(a)設(shè)置配置文件中的配置信息:該配置信息包括數(shù)據(jù)導(dǎo)出格式信息、數(shù)據(jù)表格結(jié)構(gòu)信息、每次輸出的數(shù)據(jù)量信息,其中,所述數(shù)據(jù)導(dǎo)出格式信息中將數(shù)據(jù)導(dǎo)出格式設(shè)置為xml格式;(b)解析配置信息:系統(tǒng)啟動(dòng)時(shí),讀取上述配置文件,將配置文件中的配置信息解析成對(duì)象模型,并存儲(chǔ)到內(nèi)存中;(c)獲取用戶查詢條件:用戶查詢時(shí),獲取用戶的查詢條件并將其保存到內(nèi)存中;(d)生成數(shù)據(jù)庫(kù)可執(zhí)行語句:用戶導(dǎo)出數(shù)據(jù)時(shí),從內(nèi)存中獲取用戶查詢條件和每次輸出的數(shù)據(jù)量信息,并根據(jù)用戶查詢條件和每次輸出的數(shù)據(jù)量信息生成數(shù)據(jù)庫(kù)可執(zhí)行語句,該數(shù)據(jù)庫(kù)可執(zhí)行語句中包含有數(shù)據(jù)過濾條件和數(shù)據(jù)位置信息。該數(shù)據(jù)量信息主要用于將用戶的查詢數(shù)據(jù)分批次導(dǎo)出,作為數(shù)據(jù)分割的主要依據(jù),也是數(shù)據(jù)庫(kù)可執(zhí)行語句的數(shù)據(jù)位置信息確定的關(guān)鍵。[0008]進(jìn)一步,上述數(shù)據(jù)轉(zhuǎn)換與輸出步驟包括以下步驟:(el)根據(jù)步驟(d)中的數(shù)據(jù)庫(kù)可執(zhí)行語句從數(shù)據(jù)庫(kù)中取出數(shù)據(jù),并根據(jù)對(duì)象模型中的數(shù)據(jù)表格結(jié)構(gòu)信息和數(shù)據(jù)導(dǎo)出格式信息將取出的數(shù)據(jù)轉(zhuǎn)換為xml格式的字符串;(e2)輸出步驟(el)中的xml格式的字符串?dāng)?shù)據(jù),輸出完后釋放內(nèi)存;(e3)判斷用戶查詢到的數(shù)據(jù)是否全部輸出完成,是則結(jié)束流程,否則根據(jù)本次輸出的數(shù)據(jù)位置信息和對(duì)象模型中的每次輸出的數(shù)據(jù)量信息更改數(shù)據(jù)庫(kù)執(zhí)行語句中數(shù)據(jù)位置信息,并跳轉(zhuǎn)到步驟(el),進(jìn)行下一次數(shù)據(jù)轉(zhuǎn)換和輸出。[0009]進(jìn)一步,步驟(el)包括:(ell)根據(jù)步驟(d)中的數(shù)據(jù)庫(kù)可執(zhí)行語句從數(shù)據(jù)庫(kù)中取出數(shù)據(jù),并根據(jù)對(duì)象模型中的數(shù)據(jù)表格結(jié)構(gòu)信息將取出的數(shù)據(jù)轉(zhuǎn)換為字符串后存入一個(gè)數(shù)組中;(el2)根據(jù)對(duì)象模型中的數(shù)據(jù)導(dǎo)出格式信息將步驟(ell)中數(shù)組中的字符串拼接并轉(zhuǎn)換為xml格式的字符串。[0010]進(jìn)一步,上述數(shù)據(jù)位置信息包括輸出數(shù)據(jù)的起始行和結(jié)束行信息。[0011]進(jìn)一步,上述表格結(jié)構(gòu)信息包括EXCEL表標(biāo)題、列顯示名、列寬度、列高度、列顯示格式、列對(duì)齊方式、列綁定信息。[0012]本方案中,將輸出數(shù)據(jù)格式定義為xml格式,支持將具有龐大數(shù)據(jù)量的EXCEL文件分批進(jìn)行輸出,每批次數(shù)據(jù)輸出完成后都進(jìn)行一次內(nèi)存釋放,因此在數(shù)據(jù)庫(kù)服務(wù)器內(nèi)一直只有當(dāng)前下載批量的數(shù)據(jù)(例如只有一頁(yè)約為500條的數(shù)據(jù)),占用內(nèi)存量小,減少了服務(wù)器資源消耗;而傳統(tǒng)的方式一般對(duì)EXCEL文件就直接采用EXCEL格式的數(shù)據(jù)導(dǎo)出,而EXCEL文件本身的數(shù)據(jù)量就遠(yuǎn)遠(yuǎn)大于xml格式的數(shù)據(jù),同時(shí)也不支持分批或分頁(yè)導(dǎo)出,發(fā)明人在長(zhǎng)期的實(shí)踐和探索中提出了本方案中的基于xml格式的輸出數(shù)據(jù)、采用分批輸出的算法將龐大數(shù)據(jù)量的EXCEL數(shù)據(jù)分批輸出的方法,該方法可以大大減小數(shù)據(jù)下載時(shí)對(duì)內(nèi)存的占用,具有突出的特點(diǎn)。[0013]多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出裝置,包括:配置模塊,用于對(duì)配置文件中的配置信息進(jìn)行設(shè)置,上述配置信息包括數(shù)據(jù)導(dǎo)出格式信息、數(shù)據(jù)表格結(jié)構(gòu)信息、每次輸出的數(shù)據(jù)量信息,上述數(shù)據(jù)導(dǎo)出格式信息中的數(shù)據(jù)導(dǎo)出格式為xml格式;解析模塊,用于在系統(tǒng)啟動(dòng)時(shí)讀取配置文件,將配置文件中的配置信息解析成對(duì)象模型存儲(chǔ)在內(nèi)存中;查詢條件獲取模塊:用于獲取用戶查詢時(shí)的查詢條件并將其保存到內(nèi)存中;數(shù)據(jù)可執(zhí)行語句拼裝模塊,用于在用戶導(dǎo)出數(shù)據(jù)時(shí)從內(nèi)存中獲取用戶查詢條件和每次輸出的數(shù)據(jù)量信息,并根據(jù)用戶查詢條件和每次輸出的數(shù)據(jù)量信息生成數(shù)據(jù)庫(kù)可執(zhí)行語句;該可執(zhí)行語句中包含有數(shù)據(jù)過濾條件和數(shù)據(jù)位置信息。[0014]數(shù)據(jù)轉(zhuǎn)換和輸出模塊,用于分批次轉(zhuǎn)換和輸出需要導(dǎo)出的數(shù)據(jù),并在每次輸出完畢后釋放內(nèi)存。[0015]進(jìn)一步,上述數(shù)據(jù)轉(zhuǎn)換和輸出模塊中包括:第一轉(zhuǎn)換模塊:用于根據(jù)數(shù)據(jù)可執(zhí)行語句拼裝模塊生成的數(shù)據(jù)庫(kù)可執(zhí)行語句從數(shù)據(jù)庫(kù)中取出數(shù)據(jù),并根據(jù)對(duì)象模型中的數(shù)據(jù)表格結(jié)構(gòu)信息將取出的數(shù)據(jù)轉(zhuǎn)換為字符串后存入一個(gè)數(shù)組中;第二轉(zhuǎn)換模塊:用于根據(jù)對(duì)象模型中的數(shù)據(jù)導(dǎo)出格式將數(shù)組中的字符串拼接并轉(zhuǎn)換為xml格式的字符串;輸出模塊:用于向用戶輸出xml格式的字符串?dāng)?shù)據(jù),輸出完后釋放內(nèi)存;判斷模塊:用于判斷用戶查詢到的數(shù)據(jù)是否全部輸出完成,如果未全部輸出,則根據(jù)本次輸出的數(shù)據(jù)位置信息和對(duì)象模型中的每次輸出的數(shù)據(jù)量信息更改數(shù)據(jù)庫(kù)執(zhí)行語句中數(shù)據(jù)位置信息,進(jìn)行下一次數(shù)據(jù)轉(zhuǎn)換和輸出。[0016]相對(duì)于現(xiàn)有技術(shù),本發(fā)明具有如下優(yōu)點(diǎn)和有益效果:1、本發(fā)明將數(shù)據(jù)量非常大的EXCEL文件分批進(jìn)行導(dǎo)出,每批次導(dǎo)出給客戶端后都進(jìn)行了一次內(nèi)存釋放,因此在數(shù)據(jù)庫(kù)服務(wù)器內(nèi)一直只有當(dāng)前下載批量的數(shù)據(jù)(例如只有一頁(yè)約為500條的數(shù)據(jù)),占用內(nèi)存量小,減少了服務(wù)器資源消耗;2、本發(fā)明中,數(shù)據(jù)庫(kù)服務(wù)器內(nèi)存只保留了較少的數(shù)據(jù),因此在有限的內(nèi)存資源下,可滿足更多的用戶查詢和下載需求;3、本發(fā)明中,采用xml格式的數(shù)據(jù)輸出查詢數(shù)據(jù),在導(dǎo)出相同條數(shù)的數(shù)據(jù)的情況下,其本身的數(shù)據(jù)量遠(yuǎn)小于Excel格式的數(shù)據(jù),進(jìn)一步減小了內(nèi)存占用;4、本發(fā)明導(dǎo)出EXCEL文件并不生成臨時(shí)文件,減少了IO操作,提高了服務(wù)器性能。【專利附圖】【附圖說明】[0017]圖1為本發(fā)明的流程圖。【具體實(shí)施方式】[0018]下面結(jié)合實(shí)施例及附圖,對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說明,但本發(fā)明的實(shí)施方式不僅限于此。[0019]【裝置實(shí)施例】多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出裝置,包括:配置模塊,用于對(duì)配置文件中的配置信息進(jìn)行設(shè)置,該配置信息包括數(shù)據(jù)導(dǎo)出格式信息、數(shù)據(jù)表格結(jié)構(gòu)信息、每次輸出的數(shù)據(jù)量信息,其中,數(shù)據(jù)導(dǎo)出格式信息中的數(shù)據(jù)導(dǎo)出格式為xml格式,本實(shí)施例中,數(shù)據(jù)表格結(jié)構(gòu)信息包括EXCEL表標(biāo)題、列顯示名、列寬度、列高度、列顯示格式、列對(duì)齊方式、列綁定等信息。本實(shí)施例中,每次輸出的數(shù)據(jù)量定為每次輸出一頁(yè),每頁(yè)50行實(shí)際應(yīng)用中:每頁(yè)多少行可以根據(jù)需求通過配置文件進(jìn)行配置;解析模塊,用于在系統(tǒng)啟動(dòng)時(shí)讀取配置文件,將配置文件中的配置信息解析成對(duì)象模型存儲(chǔ)在內(nèi)存中;查詢條件獲取模塊:用于獲取用戶查詢時(shí)的查詢條件并將其保存到內(nèi)存中;該模塊在用戶在客戶端點(diǎn)擊查詢按鈕時(shí)響應(yīng),將用戶的查詢條件保存在Session中。[0020]數(shù)據(jù)可執(zhí)行語句拼裝模塊,用于在用戶導(dǎo)出數(shù)據(jù)時(shí)從內(nèi)存中獲取用戶查詢條件和每次輸出的數(shù)據(jù)量信息,并根據(jù)用戶查詢條件和每次輸出的數(shù)據(jù)量信息生成數(shù)據(jù)庫(kù)可執(zhí)行語句,生成的可執(zhí)行語句中包含有數(shù)據(jù)過濾條件和數(shù)據(jù)位置信息;數(shù)據(jù)轉(zhuǎn)換和輸出模塊,用于分批次轉(zhuǎn)換和輸出需要導(dǎo)出的數(shù)據(jù),并在每次輸出完畢后釋放內(nèi)存。該模塊中還包括4個(gè)子模塊:第一轉(zhuǎn)換模塊、第二轉(zhuǎn)換模塊、輸出模塊、判斷模塊,其中:第一轉(zhuǎn)換模塊:用于根據(jù)數(shù)據(jù)可執(zhí)行語句拼裝模塊生成的數(shù)據(jù)庫(kù)可執(zhí)行語句從數(shù)據(jù)庫(kù)中取出數(shù)據(jù),并根據(jù)對(duì)象模型中的數(shù)據(jù)表格結(jié)構(gòu)信息將取出的數(shù)據(jù)轉(zhuǎn)換為字符串后存入一個(gè)數(shù)組中;第二轉(zhuǎn)換模塊:用于根據(jù)對(duì)象模型中的數(shù)據(jù)導(dǎo)出格式將數(shù)組中的字符串拼接并轉(zhuǎn)換為xml格式的字符串;輸出模塊:用于向用戶輸出xml格式的字符串?dāng)?shù)據(jù),輸出完后釋放內(nèi)存;判斷模塊:用于判斷用戶查詢到的數(shù)據(jù)是否全部輸出完成,如果未全部輸出,則根據(jù)本次輸出的數(shù)據(jù)位置信息和對(duì)象模型中的每次輸出的數(shù)據(jù)量信息更改數(shù)據(jù)庫(kù)執(zhí)行語句中數(shù)據(jù)位置信息,進(jìn)行下一次數(shù)據(jù)轉(zhuǎn)換和輸出。[0021]【方法實(shí)施例】如圖1所示,本實(shí)施例的多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出方法,包括以下步驟。[0022](a)設(shè)置配置文件中的配置信息:該配置信`息包括數(shù)據(jù)導(dǎo)出格式信息、數(shù)據(jù)表格結(jié)構(gòu)信息、每次輸出的數(shù)據(jù)量信息。其中,數(shù)據(jù)導(dǎo)出格式信息中的數(shù)據(jù)導(dǎo)出格式被設(shè)置為xml格式;上述數(shù)據(jù)表格結(jié)構(gòu)信息包括EXCEL表標(biāo)題、列顯示名、列寬度、列高度、列顯示格式、列對(duì)齊方式、列綁定等信息;本實(shí)施例中,設(shè)置配置文件中的配置信息時(shí):(al)采用〈table〉標(biāo)簽中的table元素、tr元素、th元素或td元素等設(shè)置數(shù)據(jù)導(dǎo)出格式為xml格式,本實(shí)施例中數(shù)據(jù)導(dǎo)出格式具體設(shè)置為;〈metahttp-equiv=Content_Typecontent=//text/xml;Charset=UtfD(設(shè)置文件編碼和格式)〈tableborder=lpx>(表格開始)<tr>(行開始)〈tdalign=〃left〃height=〃20〃width=〃200〃>哈哈</td>(設(shè)置單兀格數(shù)據(jù)格式,高20,寬200,左對(duì)齊)<tr>(行結(jié)束)〈/table〉(表格結(jié)束)(a2)定義數(shù)據(jù)表格結(jié)構(gòu)信息:包括EXCEL表標(biāo)題、列顯示名、列寬度、列高度、列顯示格式、列對(duì)齊方式、列綁定等信息,其具體定義了如下信息:excelModel:列表界面導(dǎo)出的EXCEL數(shù)據(jù)定義queryAction:查詢列表的action定義title:導(dǎo)出報(bào)表的標(biāo)題tableFoots:表腳cols:列元素定義,元素為〈CellBean〉fiIeName:導(dǎo)出的文件名tabIeHeads:表眉其中,對(duì)象CellBean表示EXCEL每個(gè)單元格的格式,其進(jìn)一步包括以下信息:title:列標(biāo)題height:列高度width:列寬度propertyPath:該列對(duì)應(yīng)的對(duì)象的屬性路徑,支持無限級(jí)對(duì)象屬性,比如a.b.ccellType:列數(shù)據(jù)類型,為字符串、日期、數(shù)字等3種format:導(dǎo)出數(shù)據(jù)的顯示格式。[0023](a3)將每次輸出的數(shù)據(jù)量信息設(shè)置為:每頁(yè)50行,,實(shí)際應(yīng)用中,每次輸出的數(shù)據(jù)量即每頁(yè)多少行可以根據(jù)需求通過配置文件進(jìn)行配置;(b)系統(tǒng)啟動(dòng)時(shí),讀取上述配置文件,將配置文件中的配置信息解析成對(duì)象模型,并存儲(chǔ)到內(nèi)存中;(C)用戶進(jìn)行查詢操作時(shí),獲取用戶的查詢條件并將其保存到內(nèi)存中的Session中,將查詢結(jié)果顯示給用戶;(d)用戶進(jìn)行導(dǎo)出操作時(shí),進(jìn)行以下操作:(dl)從Session中取出查詢條件;(d2)從對(duì)象模型中查詢EXCEL表標(biāo)題、列顯示名、列寬度、列高度、列顯示格式、列對(duì)齊方式、列綁定等數(shù)據(jù)表格結(jié)構(gòu)信息;(d3)然后創(chuàng)建服務(wù)器響應(yīng)流。[0024](d4)生成數(shù)據(jù)庫(kù)可執(zhí)行語句;用戶導(dǎo)出數(shù)據(jù)時(shí),從內(nèi)存中獲取用戶查詢條件和每次輸出的數(shù)據(jù)量信息,并根據(jù)用戶查詢條件和每次輸出的數(shù)據(jù)量信息生成數(shù)據(jù)庫(kù)可執(zhí)行語句,該數(shù)據(jù)庫(kù)可執(zhí)行語句中包含有數(shù)據(jù)過濾條件和數(shù)據(jù)位置信息。該執(zhí)行語句中包括了查詢條件和取出數(shù)據(jù)的起始位置(即起始行和結(jié)束行),例如select*from(select*fromITP_L0Gwherenamelike’r%’)whererownum>(pageNow-1)*50andrownum〈=(pageNow)*50-1,此處,將輸出的頁(yè)數(shù)pageNow作為參數(shù),pageNow初始值為I,即第一批次輸出I頁(yè)數(shù)據(jù),第一頁(yè)數(shù)據(jù)為從第0行至第49行的數(shù)據(jù);也可以直接將輸出行數(shù)r作為參數(shù),直接設(shè)置起始行和結(jié)束行行數(shù),例如:select*from(select*fromITP_L0Gwherenamelike’r%’)whererownum>randrownum〈=r+49,r初始值為0,取從第0行至第49行的數(shù)據(jù)。[0025](d5)根據(jù)步驟(d4)中的數(shù)據(jù)庫(kù)可執(zhí)行語句從數(shù)據(jù)庫(kù)中取出第0行至第49行的數(shù)據(jù),并根據(jù)對(duì)象模型中的數(shù)據(jù)表格結(jié)構(gòu)信息將取出的數(shù)據(jù)轉(zhuǎn)換為字符串后存入一個(gè)數(shù)組中;本步驟中,從數(shù)據(jù)庫(kù)的每行數(shù)據(jù)就是一個(gè)業(yè)務(wù)對(duì)象,遍歷取出數(shù)據(jù)的每一行數(shù)據(jù),根據(jù)從excelModel屬性值獲取的不同列的元數(shù)據(jù)定義CellBean(EXCEL每個(gè)單元格的格式),把每列所對(duì)應(yīng)的對(duì)象屬性值放入數(shù)組中,放入數(shù)組的順序與excelModel中列定義的順序一致。如果該列為日期型,那么根據(jù)屬性值format取得日期顯示格式后轉(zhuǎn)化為字符串;如果該列為數(shù)字型,那么根據(jù)屬性值format取得數(shù)字顯示格式后轉(zhuǎn)化為字符串;否則直接轉(zhuǎn)化為字符串。[0026](d6)根據(jù)對(duì)象模型中的數(shù)據(jù)導(dǎo)出格式信息將步驟(d5)中數(shù)組中的字符串拼接并轉(zhuǎn)換為xml格式的字符串;將該數(shù)組的數(shù)據(jù)轉(zhuǎn)換為〈trXtdX/tdX/tr〉的xml數(shù)據(jù)。根據(jù)從excelModel屬性值獲取的不同列的元數(shù)據(jù)定義CellBean,獲取每列的對(duì)齊方式,如果列定義了左右對(duì)齊方式,那么在生成td的時(shí)候,加align標(biāo)識(shí)。[0027](d7)向響應(yīng)流輸出步驟(d6)中的xml格式的字符串?dāng)?shù)據(jù),響應(yīng)流將本次數(shù)據(jù)全部輸出給客戶端后釋放內(nèi)存;(d8)判斷用戶查詢到的數(shù)據(jù)是否全部輸出完成,是則結(jié)束流程,否則根據(jù)本次輸出的數(shù)據(jù)位置信息和對(duì)象模型中的每次輸出的數(shù)據(jù)量信息更改數(shù)據(jù)庫(kù)執(zhí)行語句中數(shù)據(jù)位置信息,即:采用頁(yè)數(shù)作為參數(shù)時(shí),將數(shù)據(jù)庫(kù)可執(zhí)行語句中的參數(shù)PageNow加I后再賦值給pageNow,并跳轉(zhuǎn)到步驟(d5),再次執(zhí)行select*from(select*fromITP_L0Gwherenamelike'r%')whererownum>(pageNow-1)*50andrownum<=(pageNow)*50-1ip-句中的pageNow,進(jìn)行下一次數(shù)據(jù)轉(zhuǎn)換和輸出,采用行數(shù)r作為參數(shù)時(shí),將r+50賦值給r后再次執(zhí)行select*from(select*fromITP_L0Gwherenamelike,r%,)whererownum>randrownum〈=r+49,取接下來50行的數(shù)據(jù)。[0028](e)用戶所在客戶端保存數(shù)據(jù),保存完后即可用EXCEL軟件讀取數(shù)據(jù)查閱。本發(fā)明一般用于用戶客戶端所在設(shè)備與數(shù)據(jù)庫(kù)服務(wù)器為不同設(shè)備的情況下,通過本發(fā)明的下載方法減小數(shù)據(jù)庫(kù)服務(wù)器的內(nèi)存占用,支持更多用戶的查詢和下載需求。[0029]以上僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實(shí)施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對(duì)于本【
技術(shù)領(lǐng)域:
】的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤(rùn)飾,應(yīng)視為本發(fā)明的保護(hù)范圍?!緳?quán)利要求】1.多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出方法,包括數(shù)據(jù)轉(zhuǎn)換與輸出步驟,其特征在于,該步驟中對(duì)需要導(dǎo)出的數(shù)據(jù)進(jìn)行分批次轉(zhuǎn)換和輸出,每次輸出完畢后釋放內(nèi)存。2.根據(jù)權(quán)利要求1所述的多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出方法,其特征在于,在數(shù)據(jù)轉(zhuǎn)換與輸出步驟之前還包括以下步驟:(a)設(shè)置配置文件中的配置信息:所述配置信息包括數(shù)據(jù)導(dǎo)出格式信息、數(shù)據(jù)表格結(jié)構(gòu)信息、每次輸出的數(shù)據(jù)量信息,所述數(shù)據(jù)導(dǎo)出格式信息中將數(shù)據(jù)導(dǎo)出格式設(shè)置為xml格式;(b)解析配置信息:系統(tǒng)啟動(dòng)時(shí),讀取所述配置文件,將配置文件中的配置信息解析成對(duì)象模型,并存儲(chǔ)到內(nèi)存中;(c)獲取用戶查詢條件:用戶查詢時(shí),獲取用戶的查詢條件并將其保存到內(nèi)存中;(d)生成數(shù)據(jù)庫(kù)可執(zhí)行語句:用戶導(dǎo)出數(shù)據(jù)時(shí),從內(nèi)存中獲取用戶查詢條件和每次輸出的數(shù)據(jù)量信息,并根據(jù)用戶查詢條件和每次輸出的數(shù)據(jù)量信息生成數(shù)據(jù)庫(kù)可執(zhí)行語句,所述數(shù)據(jù)庫(kù)可執(zhí)行語句中包含有數(shù)據(jù)過濾條件和數(shù)據(jù)位置信息。3.根據(jù)權(quán)利要求2所述的多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出方法,其特征在于,數(shù)據(jù)轉(zhuǎn)換與輸出步驟包括以下步驟:(el)根據(jù)步驟(d)中的數(shù)據(jù)庫(kù)可執(zhí)行語句從數(shù)據(jù)庫(kù)中取出數(shù)據(jù),并根據(jù)對(duì)象模型中的數(shù)據(jù)表格結(jié)構(gòu)信息和數(shù)據(jù)導(dǎo)出格式信息將取出的數(shù)據(jù)轉(zhuǎn)換為xml格式的字符串;(e2)輸出步驟(el)中的xml格式的字符串?dāng)?shù)據(jù),輸出完后釋放內(nèi)存;(e3)判斷用戶查詢到的數(shù)據(jù)是否全部輸出完成,是則結(jié)束流程,否則根據(jù)本次輸出的數(shù)據(jù)位置信息和對(duì)象模型中的每次輸出的數(shù)據(jù)量信息更改數(shù)據(jù)庫(kù)執(zhí)行語句中數(shù)據(jù)位置信息,并跳轉(zhuǎn)到步驟(el),進(jìn)行下一次數(shù)據(jù)轉(zhuǎn)換和輸出。4.根據(jù)權(quán)利要求3所述的多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出方法,其特征在于,步驟(el)包括:(ell)根據(jù)步驟(d)中的數(shù)據(jù)庫(kù)可執(zhí)行語句從數(shù)據(jù)庫(kù)中取出數(shù)據(jù),并根據(jù)對(duì)象模型中的數(shù)據(jù)表格結(jié)構(gòu)信息將取出的數(shù)據(jù)轉(zhuǎn)換為字符串后存入一個(gè)數(shù)組中;(el2)根據(jù)對(duì)象模型中的數(shù)據(jù)導(dǎo)出格式信息將步驟(ell)中數(shù)組中的字符串拼接并轉(zhuǎn)換為xml格式的字符串。5.根據(jù)權(quán)利要求3所述的多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出方法,其特征在于,所述數(shù)據(jù)位置信息包括輸出數(shù)據(jù)的起始行和結(jié)束行信息。6.根據(jù)權(quán)利要求2至5任一所述的多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出方法,其特征在于,所述表格結(jié)構(gòu)信息包括EXCEL表標(biāo)題、列顯示名、列寬度、列高度、列顯示格式、列對(duì)齊方式、列綁定信息。7.多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出裝置,其特征在于,包括:配置模塊,用于對(duì)配置文件中的配置信息進(jìn)行設(shè)置,所述配置信息包括數(shù)據(jù)導(dǎo)出格式信息、數(shù)據(jù)表格結(jié)構(gòu)信息、每次輸出的數(shù)據(jù)量信息,所述數(shù)據(jù)導(dǎo)出格式信息中的數(shù)據(jù)導(dǎo)出格式為xml格式;解析模塊,用于在系統(tǒng)啟動(dòng)時(shí)讀取配置文件,將配置文件中的配置信息解析成對(duì)象模型存儲(chǔ)在內(nèi)存中;查詢條件獲取模塊:用于獲取用戶查詢時(shí)的查詢條件并將其保存到內(nèi)存中;數(shù)據(jù)可執(zhí)行語句拼裝模塊,用于在用戶導(dǎo)出數(shù)據(jù)時(shí)從內(nèi)存中獲取用戶查詢條件和每次輸出的數(shù)據(jù)量信息,并根據(jù)用戶查詢條件和每次輸出的數(shù)據(jù)量信息生成數(shù)據(jù)庫(kù)可執(zhí)行語句;所述可執(zhí)行語句中包含有數(shù)據(jù)過濾條件和數(shù)據(jù)位置信息;數(shù)據(jù)轉(zhuǎn)換和輸出模塊,用于分批次轉(zhuǎn)換和輸出需要導(dǎo)出的數(shù)據(jù),并在每次輸出完畢后釋放內(nèi)存。8.根據(jù)權(quán)利要求7所述的多并發(fā)大數(shù)據(jù)量環(huán)境下EXCEL數(shù)據(jù)導(dǎo)出裝置,其特征在于,所述數(shù)據(jù)轉(zhuǎn)換和輸出模塊中包括:第一轉(zhuǎn)換模塊:用于根據(jù)數(shù)據(jù)可執(zhí)行語句拼裝模塊生成的數(shù)據(jù)庫(kù)可執(zhí)行語句從數(shù)據(jù)庫(kù)中取出數(shù)據(jù),并根據(jù)對(duì)象模型中的數(shù)據(jù)表格結(jié)構(gòu)信息將取出的數(shù)據(jù)轉(zhuǎn)換為字符串后存入一個(gè)數(shù)組中;第二轉(zhuǎn)換模塊:用于根據(jù)對(duì)象模型中的數(shù)據(jù)導(dǎo)出格式將數(shù)組中的字符串拼接并轉(zhuǎn)換為xml格式的字符串;輸出模塊:用于向用戶輸出xml格式的字符串?dāng)?shù)據(jù),輸出完后釋放內(nèi)存;判斷模塊:用于判斷用戶查詢到的數(shù)據(jù)是否全部輸出完成,如果未全部輸出,則根據(jù)本次輸出的數(shù)據(jù)位置信息和對(duì)象模型中的每次輸出的數(shù)據(jù)量信息更改數(shù)據(jù)庫(kù)執(zhí)行語句中數(shù)據(jù)位置信息,進(jìn)行下一次數(shù)據(jù)轉(zhuǎn)換`和輸出。【文檔編號(hào)】G06F17/30GK103500196SQ201310431143【公開日】2014年1月8日申請(qǐng)日期:2013年9月22日優(yōu)先權(quán)日:2013年9月22日【發(fā)明者】周發(fā)宣,陳奇志,王倩,劉軍申請(qǐng)人:成都交大光芒科技股份有限公司