JAVA使用POI如何匯出百萬級別資料

2021-07-14 14:15:52 字數 1183 閱讀 2732

經常使用excel的人應該都能知道excel2007及以上版本可以輕鬆實現儲存百萬級別的資料,但是系統中的大量資料如何能夠快速準確的匯入到excel中這好像是個難題,對於一般的web系統,我們為了解決成本,基本都是使用的入門級web伺服器tomcat,jdk在32為系統中支援的記憶體不能超過2個g,但是在64為中沒有限制,但是在64位的系統中,效能並不是太好,所以為了解決上訴問題,我們要針對我們的**來解決我們要解決的問題,在poi3.8之後新增加了乙個類,sxssfworkbook,它可以控制excel資料占用的記憶體,他通過控制在記憶體中的行數來實現資源管理,當超過了設定的行數,他會自動重新整理記憶體,將資料寫如檔案。但有人會說了,我用過這個類啊,他好像並不能完全解決,當資料量超過一定後還是會記憶體溢位的,而且時間還很長。對你只是用了這個類,但是你並沒有針對你的需求進行相應的設計,僅僅是用了,所以接下來我要說的問題就是,如果通過sxssfworkbook以及相應的寫入設計來實現百萬級別的資料快速寫入。

我先舉個例子,以前我們資料庫中存在大量的資料,我們要查詢,怎麼辦?我們在沒有經過設計的時候是這樣來處理的,寫乙個集合,然後執行jdbc,將返回的結果賦值給list,然後在返回到頁面上,但是當資料量大的時候,會出現資料無法返回,記憶體溢位的情況,於是我們在有限的時間和空間下,通過分頁將資料一頁一頁的顯示出來,這樣可以避免了大資料量資料對記憶體的占用,也提高了使用者的體驗性,在我們要匯出的百萬資料也是乙個道理,記憶體突發性占用,我們可以限制匯出資料所占用的記憶體,我們建立乙個容器,這個容器是乙個list,list中開闢10000行的儲存空間,每次儲存10000行,用完了將內容清空,然後重複利用,這樣就可以有效控制記憶體,所以我們的設計思路就基本形成了,所以分頁資料匯出共有以下3個步驟:

求資料庫中待匯出資料的行數根據行數求資料提取次數按次數將資料寫入檔案

通過以上步驟在效率和使用者體驗性上都有了很高的提高,接下來上**

public void exportamountexceldata(valuedatadto valuedatadto,

string path) throws ioexception

list.clear();

}fileoutputstream fileout = new fileoutputstream(path);

wb.write(fileout);

fileout.close();

wb.dispose();

}

JAVA使用POI如何匯出百萬級別資料

用過poi的人都知道,在poi以前的版本中並不支援大資料量的處理,如果資料量過多還會常報oom錯誤,這時候調整jvm的配置引數 也不是乙個好對策 注 jdk在32位系統中支援的記憶體不能超過2個g,而在64位中沒有限制,但是在64位的系統中,效能並不是太好 好在poi3.8版本新出來了乙個sxssf...

JAVA使用POI如何匯出百萬級別資料

用過poi的人都知道,在poi以前的版本中並不支援大資料量的處理,如果資料量過多還會常報oom錯誤,這時候調整jvm的配置引數也不是乙個好對策 注 jdk在32位系統中支援的記憶體不能超過2個g,而在64位中沒有限制,但是在64位的系統中,效能並不是太好 好在poi3.8版本新出來了乙個sxssfw...

poi百萬級資料匯出excel

通過傳入實體類陣列和指定匯出列來即可,匯出excel,讀者可直接複製到專案直接使用,下面只是個簡單的示例提供參考 一 匯出excel工具類 匯出實體類 param head 表頭 param exportcolumn 匯出字段 param exportlist 實體陣列 param clazz 實體...