還是菜鳥時,在某個.Net項目中,用戶需要從業務系統導出Report,而數據量通常都在上萬條以上,最初采用的方式就是在服務器端用NPOI生成Excel,把Data一行一行一個Cell一個Cell地寫到Excel中的每個Cell中,若用戶對Report格式要求高一點,還要一個Cell一個Cell設置單元格的Style,然后把Report給用戶下載。結果上萬條的數據用戶導出需要幾十分鍾。這樣導出Report,是個人都要crazy了。。。。。
當時,老板也沒給壓力,只是說,能不能搞定,搞不定我就從外面找個高手解決,下午4點給我答復,有壓力才有動力,終於在某篇技術貼中發現,用NPOI寫Excel有更方便更快捷的方式,可以把數據組織成二維數組,一次性寫入到Excel中一個Range中,Style也可以通過Range直接設置。優化后,導出上萬條數據只需幾十秒,老板笑了。貼出最經典的幾行代碼
Range range = xst.get_Range(excel.Cells[0, 0], excel.Cells[9999,9999]);
range.Value2 = datas; //datas為一個二維數據數據
今年又在Java項目中,昔日的菜鳥也成了帶頭大哥,某小弟用常規的思路導出Report,上萬條數據竟然需要十幾分鍾,還時不時地報內存溢出,實在時讓人崩潰。查了下API,Java的apache中的POI卻沒有Range寫入Excel的接口,但卻提供了通過XML一次性寫入Excel的方式,Demo了一下,寫入20萬數據到Excel,只需9秒。這次我笑了。。。。
參考以下網址:
QQ:251171985
E-Mail: jthuahua@126.com