大資料量匯出Excel的方案__大資料

來源:互聯網
上載者:User

http://lqw.iteye.com/blog/525982

 

測試共同條件:
資料總數為110011條,每條資料條數為19個欄位。
電腦配置為:P4 2.67GHz,1G記憶體。

一、POI、JXL、FastExcel比較
POI、JXL、FastExcel均為java第三方開源匯出Excel的開源項目。

匯出方案一:一次性全部匯出到一個Excel檔案中。
實際情況均報OutOfMemery錯誤,以下資料為報OutOfMemery資料時,資料到的最大資料數目,如表1所示:
表1:報OutOfMemery錯誤時所能處理的資料量
                                       FastExecl    POI      JXL
10000資料/sheet             37465     28996   42270
5000資料/sheet               39096     31487   46270
3000資料/sheet                39000    32493   47860
小結:
多分sheet能一定程度上減少記憶體的使用,但是均因為程式中建立的Cell(即為Excel中的一個儲存格)無法釋放,消耗大量記憶體,導致OutOfMemery錯誤;JXL表現最好,建立Cell記憶體使用量較少。

匯出方案二:先分多個Excel檔案將資料全部匯出,然後對多個Excel檔案進行合并。
首先,測試將全部資料匯出所用的時間,如表2所示,資料均測試三次取平均。
表2:匯出全部資料所用時間
                                 FastExecl    POI    JXL
10000資料/檔案             68s          33s   30s
5000資料/檔案               68s          32s   33s
3000資料/檔案               59s          33s   39s
小結:
均成功匯出Excel檔案,原因是匯出一個Excel檔案,釋放所佔用的建立Cell的記憶體。
FastExecl表現最差,POI表現穩定,JXL隨著資料的增大,速度一定程度上增快。

然後,進行整合,由於將多Excel合并成一個Excel檔案的功能只有POI所有,故使用POI測試,結果如表3所示。
註:資料量大合并還會報OutOfMemery錯誤,故合并總資料量以5萬為準。
表3:合并5萬資料所用時間
時間
10000資料/檔案 11s
5000資料/檔案 11s
3000資料/檔案 11s
小結:
使用POI對檔案進行合并速度較快,但有資料量的限制。


總結:方案二比較可行,但是資料量有限制,為5萬條。


二、匯出XML 的試算表
匯出的格式類似為純文字,能實現大資料量的儲存,並能實現分Sheet查看,且能添加簡單的樣式,符合項目要求。經實際測試Excel2003和Excel2007均能識別並正常開啟查看。使用時間測試如表4所示,資料均測試3次取平均。
表4:產生全部資料所用時間
                                   時間
10000資料/sheet      28.0秒
20000資料/sheet      30.1秒
30000資料/sheet      28.1秒
40000資料/sheet      26.5秒
50000資料/sheet      28.2秒
55000資料/sheet      26.8秒
59000資料/sheet      30.1秒
59500資料/sheet      發生假死機現象
60000資料/sheet      發生假死機現象

但是匯出的資料為XML不是純正的Excel檔案,如使用Excel檔案的xls尾碼儲存,開啟檔案會彈出警告,但不影響閱讀。
且經實際測試,在Access2007和Access2003中可通過匯入外部資料的方式,將匯出的XML匯入進Access資料庫。

三、總結
項目要求是大資料量匯出Excel檔案,POI、JXL、FastExcel不能完全滿足要求;使用XML 的試算表匯出實現了大資料量匯出,但是格式為XML不是純正的Excel檔案,為曲線救國。兩種匯出形式的比較,如表5所示。
表5:合并5萬資料所用時間
                               POI、JXL、FastExcel      XML 的試算表
匯出資料格式                 為純Execl檔案                  為XML檔案
匯出資料量                            小                               較大
能否分Sheet                         能                               能
能否添加樣式                         能                               能
能否添加圖片                        POI 能                         不能
匯出資料能否匯入Access         能                               能 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.