背景介紹:我負責的有個條形碼的模組,目前110w資料,未來還會繼續新增,需要做乙個excel匯出的功能。
org.apache.poi
poi-ooxml
3.16-beta2
主要思路: 頁面發出匯出請求,在controller裡面做處理。controller裡面主要做:
1.拿到請求引數
2.分頁查詢資料庫
3.將每次分頁查到的資料,裝入sxssfworkbook
效果:我這個表也是十幾個字段,無大字段。實測匯出100w條用時61s,excel檔案大小68m;匯出1000w條534s,excel檔案大小464m。
下面是controller原始碼
// 構造乙個空的工作簿並指定行訪問視窗。
sxssfworkbook wb = new sxssfworkbook(1);
sheet sh = null;
row row = null;
cell cell = null;
for (int i = 0; i <= cycle; i++)
sh = wb.createsheet(string.valueof(i+1));
barcodepoiutil.setexcelcontent(list, tableheader, row, sh, cell);
}bufferedoutputstream out = null;
string filename = "barcodedatas.xlsx";
try catch (ioexception e) finally
// 處理在磁碟上備份此工作簿的臨時檔案
wb.dispose();
} catch (ioexception e)
}long endtime = system.currenttimemillis();
log.info("【 " + this.getclass().getname() + " 】【 " + new ******dateformat("yyyy-mm-dd hh:mm:ss").format(new date()) + " 】 匯出:條形碼" + count + "條,用時:" + (endtime - starttime) / 1000 + " s");
}(在controller中被呼叫)工具方法:將查到的資料,裝入sheet
public class barcodepoiutil
// 建立表內容
for (int a = 0; a < list.size(); a++) }}
}}
百(千)萬級excel匯出 流式
org.apache.poigroupid poi ooxmlartifactid 3.16 beta2version dependency 效果 我這個表也是十幾個字段,無大字段。實測匯出100w條用時61s,excel檔案大小68m 匯出1000w條534s,excel檔案大小464m。不是很規...
千萬級資料匯出excel的一點心得
最近做了個專案,使用mysql資料庫,要求做到千萬級的資料用excel匯出,試了良久,找出了幾個方法.1.分批讀取,用limit,這個資料量小的時候還行,資料量一大當場傻眼 2.使用流式讀取,耗時3分鐘,速度還可以再優化,就是占用記憶體太大,1000w資料佔了3g運存,關鍵字為 resultsett...
用輸出流匯出EXCEL,在2007下開啟亂碼問題
該方法試用與2003與2007,可以匯出多個sheet.不會有亂碼.具體如下 system.io.stringwriter sw new system.io.stringwriter system.web.ui.htmltextwriter hw new system.web.ui.htmltext...