java使用POI大數據量批量導出


1.問題背景

  設計到幾十張數據庫表,每張表有幾萬到十幾萬數據不等,現在需要盡可能快的導出excel數據。

2.遇到的問題及解決思路

  2.1 數據量大,生成速度慢。下載的文件太大。

     使用多線程下載,一個表的數據分配一條線程,全部下載完成壓縮成一個zip文件。

    2.2 單表數據過多超過excel的條數據限制 

        當一個表的數據超過限制,使用csv文件的方式保存。

  2.3 數據量大時,生成Excel數據和導出比nginx的默認響應時間(60s)長,導致接口請求超時。

      當數據量大時,poi的excel生成和下載超過60s難以避免。但我們不能輕易去修改nginx的響應時間。我把生成數據文件和下載分為兩個接口,

    消耗的時間主要是在生產數據文件的接口上,這里我生成數據的接口先是直接響應並給出文件名,然后開啟另外的線程去生成文件,繞過nginx的

    超時時間,前端拿到文件名,定時10s去調用判斷文件是否存在的接口,存在就去下載文件。

 


免責聲明!

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



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