一種動態(tài)導(dǎo)出文件的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種動態(tài)導(dǎo)出文件的方法。
【背景技術(shù)】
[0002]目前,隨著基于 J2EE (Java2Platform, Enterprise Edit1n, Java2 平臺企業(yè)版)架構(gòu)的應(yīng)用軟件的不斷發(fā)展,各種功能越來越強大,極大地方便了用戶的操作,同時各種各樣的功能所設(shè)計的數(shù)據(jù)也越來越多,令人眼花繚亂。在大數(shù)量面前,普通的業(yè)務(wù)系統(tǒng)僅是對數(shù)據(jù)進(jìn)行展示或者簡單的處理后展示,用戶需要在這些繁雜的數(shù)據(jù)中查找出符合自己需要的數(shù)據(jù),數(shù)據(jù)導(dǎo)出能滿足用戶的需求,也是最好的方式。
[0003]一般的數(shù)據(jù)導(dǎo)出程序都是固定的導(dǎo)出列、導(dǎo)出列的順序,但是用戶有時需要的導(dǎo)出列并非是全部,所以普通的導(dǎo)出并不能完全滿足用戶導(dǎo)出數(shù)據(jù)的要求。另外,普通的導(dǎo)出數(shù)據(jù)文件,若是數(shù)據(jù)量很大,那么導(dǎo)出文件也是很大的,對于用戶來說,在相當(dāng)大的數(shù)據(jù)文件上篩選數(shù)據(jù),那是比較費時的。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供一種動態(tài)導(dǎo)出文件的方法,用以現(xiàn)有技術(shù)中用戶不能動態(tài)配置導(dǎo)出文件的問題。
[0005]為達(dá)到上述目的,本發(fā)明提供了一種動態(tài)導(dǎo)出文件的方法,包括以下步驟:
[0006]將需要導(dǎo)出頁面的SQL (Structured Query Language,結(jié)構(gòu)化查詢語言)文件配置進(jìn)XML (Extensible Markup Language,可擴展標(biāo)記語言)文件中,同時將需要導(dǎo)出頁面在前臺顯示列的名稱配置進(jìn)XML文件中,前臺顯示列的名稱與SQL文件中相應(yīng)的字段--
對應(yīng);
[0007]根據(jù)前臺顯示列的名稱與SQL文件中相應(yīng)的字段的對應(yīng)關(guān)系,對XML文件中的SQL文件及其中的列進(jìn)行解析,將SQL文件及其中的列的解析結(jié)果放入到變量中;
[0008]通過接口程序獲取用戶自定義的導(dǎo)出列和導(dǎo)出列次序以及單個數(shù)據(jù)文件的導(dǎo)出行數(shù);
[0009]通過對設(shè)定字符的識別,將變量中存放的SQL文件的解析結(jié)果分解為多個小段,根據(jù)導(dǎo)出列和導(dǎo)出列次序?qū)Χ鄠€小段進(jìn)行重新拼接,得到目標(biāo)SQL文件;
[0010]根據(jù)目標(biāo)SQL文件生成JAVA結(jié)果集,將JAVA結(jié)果集與單個數(shù)據(jù)文件的導(dǎo)出行數(shù)進(jìn)行運算,計算出分割數(shù)據(jù)文件的個數(shù),并分批次將各分割數(shù)據(jù)文件導(dǎo)出。
[0011]可選的,設(shè)定字符為逗號。
[0012]可選的,采用多次迭代的方式,根據(jù)導(dǎo)出列和導(dǎo)出列次序?qū)Χ鄠€小段進(jìn)行重新拼接。
[0013]可選的,接口程序為需要導(dǎo)出頁面引用的JS (Javascript,一種客戶端腳本語言)文件和JSP (Java Server Pages, Java服務(wù)器頁面)文件。
[0014]本發(fā)明的動態(tài)導(dǎo)出文件的方法,使用戶可以根據(jù)自身需要,導(dǎo)出數(shù)據(jù)中所需的列,并且可以把大數(shù)據(jù)量的文件,按照批次導(dǎo)出,便于用戶在導(dǎo)出后對數(shù)據(jù)文件進(jìn)行篩選等操作。
【附圖說明】
[0015]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0016]圖1為本發(fā)明一個實施例的動態(tài)導(dǎo)出文件的方法流程圖。
【具體實施方式】
[0017]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有付出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0018]為了解決用戶可動態(tài)配置導(dǎo)出文件的技術(shù)問題,必須解決三個方面的問題:定義導(dǎo)出配置文件的問題、動態(tài)選擇導(dǎo)出列的問題、支持大數(shù)據(jù)量文件多種導(dǎo)出方式的問題。
[0019]首先是定義導(dǎo)出配置文件的問題,在WEB (網(wǎng)絡(luò))應(yīng)用中,常見數(shù)據(jù)的導(dǎo)出很多,由于各個頁面導(dǎo)出時,所采用的SQL是不一樣的,鑒于XML所具有的通用性方面,采用XML配置SQL的方式。將各個導(dǎo)出頁面的SQL配置進(jìn)XML中,同時配置進(jìn)XML中的還有前臺顯示列的名稱,默認(rèn)的顯示列的名字與SQL中查出的字段是一一對應(yīng)的。
[0020]有了 XML配置文件,那么就需要解決XML文件的解析,此處的解析,主要以解析SQL以及導(dǎo)出COLUMN (列)為主。解析XML的程序,將解析所得的SQL以及COLUMN存放到變量里,供查詢程序使用。
[0021]其次,需要解決的是,如何使導(dǎo)出頁面能夠無縫的調(diào)用到導(dǎo)出程序。所謂無縫,是指即使系統(tǒng)有很多需要導(dǎo)出的頁面,只需在相關(guān)的頁面添加幾句話就可以實現(xiàn)數(shù)據(jù)導(dǎo)出。為了做到這點,我們在導(dǎo)出程序中有一個公用的JS文件,用來統(tǒng)一處理導(dǎo)出所用變量,只需要在需要導(dǎo)出的頁面添加此JS的引用,同時添加一個導(dǎo)出頁面JSP的引用,就可以無縫的實現(xiàn)導(dǎo)出。在公用的JS中,我們使用了 DWR(Direct Web Remoting,網(wǎng)絡(luò)遠(yuǎn)程調(diào)用框架)技術(shù),可以及時的通過變量將用戶所自定義的內(nèi)容從前端頁面獲取到,然后傳到后臺JAVA端,對導(dǎo)出指令進(jìn)行及時的處理。
[0022]再次,便是動態(tài)選擇導(dǎo)出列的問題,由于用戶導(dǎo)出頁面繁多,并且在各個頁面上,用戶所關(guān)注的內(nèi)容不一樣,因此提供給用戶動態(tài)選擇導(dǎo)出列以及導(dǎo)出順序的功能。動態(tài)選擇導(dǎo)出列,是在默認(rèn)的導(dǎo)出列上選擇導(dǎo)出哪些列,以及選擇導(dǎo)出列的排列順序。此處的關(guān)鍵在于程序?qū)⒛J(rèn)的SQL處理為符合條件的SQL。
[0023]處理程序的原理是將變量中存放的原始SQL以及COLUMN讀取出來,然后根據(jù)用戶選擇的導(dǎo)出列以及導(dǎo)出列的順序,對原始SQL進(jìn)行轉(zhuǎn)化,通過對特殊字符(例如逗號)的識另O,將原始SQL分解成多個小段,然后根據(jù)從前端傳過來的用戶自定義內(nèi)容以及COLUMN,用多次迭代的方式,將這多段的SQL進(jìn)行重新拼接,拼接成符合要求的SQL。
[0024]然后將此SQL傳遞給查詢程序,查詢程序生成查詢結(jié)果,將結(jié)果發(fā)送給生成EXCEL的程序,此EXCEL的程序調(diào)用的是APACHE的一個導(dǎo)出工具,最后生成符合條件的JAVA數(shù)據(jù)包。
[0025]最后,支持大數(shù)據(jù)量文件多種導(dǎo)出方式,由于實際中,用戶所導(dǎo)出的文件都較大,不適合用戶進(jìn)行篩選等操作,所以支持大數(shù)據(jù)量文件分批次導(dǎo)出、分頁導(dǎo)出等。分批次導(dǎo)出時將文件分為幾個大小(可以自行設(shè)定,設(shè)置項為XX條數(shù)據(jù))一致的小文件,導(dǎo)出完成時,即是生成了多個導(dǎo)出文件,方便用戶進(jìn)行各項操作。導(dǎo)出多個文件運用了 AJAX技術(shù),并且是在導(dǎo)出程序中添加了變量,讀取用戶前臺設(shè)置的自定義條數(shù),然后將導(dǎo)出文件按照總的條數(shù)與設(shè)定的條數(shù)求出的總批次,分批次導(dǎo)出