oh my god,寫20萬數據到Excel只需9秒


      還是菜鳥時,在某個.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秒。這次我笑了。。。。

參考以下網址:

     http://libjakarta-poi-java.sourcearchive.com/documentation/3.6plus-pdfsg/BigGridDemo_8java-source.html

 

QQ:251171985

E-Mail: jthuahua@126.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM