本發(fā)明涉及javaweb工程領域,尤其是通過瀏覽器從數(shù)據(jù)庫導出百萬級記錄到表格的方法及系統(tǒng)。
背景技術:
統(tǒng)計報表是大型web應用系統(tǒng)中很常見的一個應用,而導出數(shù)據(jù)到excel等文件中保存是報表的一個核心功能。當系統(tǒng)部署到不同的地方,由于各地應用場景的不同,對導出的數(shù)據(jù)格式及樣式的要求也不盡相同。部署的地方越多,這種不同就越多,就需要開發(fā)對應的功能和修改導出模塊的程序來應對,極大增加了開發(fā)和測試的成本。目前,一般的解決方法是通過配置文件大量的屬性配置來實現(xiàn)導出樣式的多樣化。如其中的一種方法自定義標簽法,通過解析標簽向模板中填充數(shù)據(jù)。另一種方法通過配置xml文件,然后根據(jù)配置導出對應的樣式。這些方法將導出報表的大部分部分工作轉(zhuǎn)移給軟件的使用者,大量增加了用戶的操作,并且當導出的樣式復雜尤其是數(shù)據(jù)列比較多并且涉及單元格合并時,這種方法對應的配置也變得繁瑣易出錯,違反了產(chǎn)品設計的易用性原則
隨著web技術的發(fā)展日新月異,它的發(fā)展同時也推動了網(wǎng)絡的不斷發(fā)展,從而影響到社會及個人的生活,在目前提倡大數(shù)據(jù)的環(huán)境下,用戶的數(shù)據(jù)量越來越大,這就造成了用戶需要把服務器的數(shù)據(jù)組裝成excel表格式下載到本地時,如果數(shù)據(jù)量過大,就會造成服務器崩潰等問題。
技術實現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術的不足,提供通過瀏覽器從數(shù)據(jù)庫導出百萬級記錄到表格的方法及系統(tǒng),解決在數(shù)據(jù)量達到百萬級數(shù)據(jù)時通過瀏覽器導出數(shù)據(jù)服務器會崩潰的問題,并且優(yōu)化了數(shù)據(jù)的處理速度,通過壓縮的方法減小了下載文件的大小,使瀏覽器下載百萬級數(shù)據(jù)時更加的快捷、穩(wěn)定。
本發(fā)明的目的是通過以下技術方案來實現(xiàn)的:通過瀏覽器從數(shù)據(jù)庫導出百萬級記錄到表格的方法,其特征在于:具體包括如下步驟:
s0001用戶請求:用戶請求導出數(shù)據(jù),服務器接收用戶請求后提取用戶請求參數(shù);
s0002數(shù)據(jù)處理:通過請求參數(shù)的值按預設條件查詢數(shù)據(jù)庫,得到需要導出的數(shù)據(jù);
s0003數(shù)據(jù)組裝:將需要導出的數(shù)據(jù)組裝成excel表格形式,如數(shù)據(jù)量小則直接導出一個excel表形式的文件到瀏覽器,否則將數(shù)據(jù)組裝成多個excel表;
s0004數(shù)據(jù)存儲:將百萬級數(shù)據(jù)以多個excel表形式存儲到硬盤;
s0005數(shù)據(jù)壓縮:將多個excel文件打包成zip格式的壓縮文件,并生產(chǎn)文件路徑;
s0006下載信息發(fā)送給用戶;
s0007用戶接收下載信息,然后將服務器數(shù)據(jù)下載到本地。
進一步限定,所述的數(shù)據(jù)組裝,將需要導出的數(shù)據(jù)組裝成excel表格形式,如數(shù)據(jù)量小于65536kb則直接導出一個excel表形式的文件到瀏覽器,否則將數(shù)據(jù)組裝成多個excel表,。
一種通過瀏覽器從數(shù)據(jù)庫導出百萬級記錄到excel表格的系統(tǒng),它包括:數(shù)據(jù)處理模塊、數(shù)據(jù)組裝模塊、數(shù)據(jù)存儲模塊、數(shù)據(jù)壓縮模塊和數(shù)據(jù)導出模塊;
所述的數(shù)據(jù)處理模,用于接收瀏覽器發(fā)起的數(shù)據(jù)導出請求,通過請求參數(shù)的值按條件查詢數(shù)據(jù)庫,得到需要導出的數(shù)據(jù);
所述的數(shù)據(jù)組裝模塊,將需要導出的數(shù)據(jù)組裝成excel表格形式,數(shù)據(jù)量小則直接導出一個excel表形式的文件到瀏覽器,否則調(diào)用數(shù)據(jù)存儲模塊,將多個excel表存儲到服務器本地;
所述的數(shù)據(jù)存儲模塊,用于將內(nèi)存中的數(shù)據(jù)存儲到硬盤;
所述的數(shù)據(jù)壓縮模塊,用于將多個文件打包成zip格式的壓縮文件;
數(shù)據(jù)導出模塊,用于將服務器數(shù)據(jù)導出到瀏覽器,供本地下載。
本發(fā)明的有益效果是:本發(fā)明能夠在瀏覽器導出百萬級數(shù)據(jù)量的數(shù)據(jù)、導出的數(shù)據(jù)以excel表為呈現(xiàn)方式,解決在數(shù)據(jù)量達到百萬級數(shù)據(jù)時通過瀏覽器導出數(shù)據(jù)服務器會崩潰的問題,并且優(yōu)化了數(shù)據(jù)的處理速度,通過壓縮的方法減小了下載文件的大小,使瀏覽器下載百萬級數(shù)據(jù)時更加的快捷、穩(wěn)定。
附圖說明
圖1為一種通過瀏覽器從數(shù)據(jù)庫導出百萬級記錄到excel表格的方法流程圖;
圖2為一種通過瀏覽器從數(shù)據(jù)庫導出百萬級記錄到excel表格的系統(tǒng)框架圖。
具體實施方式
下面結合附圖進一步詳細描述本發(fā)明的技術方案,但本發(fā)明的保護范圍不局限于以下所述。
如圖1所示,通過瀏覽器從數(shù)據(jù)庫導出百萬級記錄到表格的方法,其特征在于:具體包括如下步驟:
s0001用戶請求:用戶請求導出數(shù)據(jù),服務器接收用戶請求后提取用戶請求參數(shù);
s0002數(shù)據(jù)處理:通過請求參數(shù)的值按預設條件查詢數(shù)據(jù)庫,得到需要導出的數(shù)據(jù);
s0003數(shù)據(jù)組裝:將需要導出的數(shù)據(jù)組裝成excel表格形式,如數(shù)據(jù)量小則直接導出一個excel表形式的文件到瀏覽器,否則將數(shù)據(jù)組裝成多個excel表;
s0004數(shù)據(jù)存儲:將百萬級數(shù)據(jù)以多個excel表形式存儲到硬盤;
s0005數(shù)據(jù)壓縮:將多個excel文件打包成zip格式的壓縮文件,并生產(chǎn)文件路徑;
s0006下載信息發(fā)送給用戶;
s0007用戶接收下載信息,然后將服務器數(shù)據(jù)下載到本地。
進一步限定,所述的數(shù)據(jù)組裝,將需要導出的數(shù)據(jù)組裝成excel表格形式,如數(shù)據(jù)量小于65536kb則直接導出一個excel表形式的文件到瀏覽器,否則將數(shù)據(jù)組裝成多個excel表,。
如圖2所示,一種通過瀏覽器從數(shù)據(jù)庫導出百萬級記錄到excel表格的系統(tǒng),它包括:數(shù)據(jù)處理模塊、數(shù)據(jù)組裝模塊、數(shù)據(jù)存儲模塊、數(shù)據(jù)壓縮模塊和數(shù)據(jù)導出模塊;
所述的數(shù)據(jù)處理模,用于接收瀏覽器發(fā)起的數(shù)據(jù)導出請求,通過請求參數(shù)的值按條件查詢數(shù)據(jù)庫,得到需要導出的數(shù)據(jù);
所述的數(shù)據(jù)組裝模塊,將需要導出的數(shù)據(jù)組裝成excel表格形式,數(shù)據(jù)量小則直接導出一個excel表形式的文件到瀏覽器,否則調(diào)用數(shù)據(jù)存儲模塊,將多個excel表存儲到服務器本地;
所述的數(shù)據(jù)存儲模塊,用于將內(nèi)存中的數(shù)據(jù)存儲到硬盤;
所述的數(shù)據(jù)壓縮模塊,用于將多個文件打包成zip格式的壓縮文件;
數(shù)據(jù)導出模塊,用于將服務器數(shù)據(jù)導出到瀏覽器,供本地下載。
所屬領域的技術人員可以清楚地了解到,為了描述的方便和簡潔,上述描述的方法、系統(tǒng)和模塊的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
本發(fā)明所揭露的方法、系統(tǒng)和模塊,可以通過其它的方式實現(xiàn)。例如,以上所描述的實施例僅是示意性的,例如,所述模塊的劃分,可以僅僅是一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個模塊或組件可以結合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以說通過一些接口,系統(tǒng)或模塊的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述分立部件說明的模塊可以是或者也可以不是物理上分開的,作為模塊顯示的部件可以是或者可以不是物理模塊,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡模塊上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例的方案目的。
另外,在本發(fā)明各個實施例中的各功能模塊可以集成在一個處理模塊中,也可以是各個模塊單獨物理存在,也可以兩個或兩個以上模塊集成在一個模塊中。
所述功能如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術方案本質(zhì)上或者說對現(xiàn)有技術做出貢獻的部分或者該技術方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:u盤、移動硬盤、制度存儲器(read-onlymemory,rom)、隨機存取存儲器(randomaccessmemory,ram)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當理解本發(fā)明并非局限于本文所披露的形式,不應看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述構想范圍內(nèi),通過上述教導或相關領域的技術或知識進行改動。而本領域人員所進行的改動和變化不脫離本發(fā)明的精神和范圍,則都應在本發(fā)明所附權利要求的保護范圍內(nèi)。