隨筆-314  評論-209  文章-0  trackbacks-0

           

          試共同條件:
          數據總數為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數據/shee 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
          posted on 2009-08-07 15:57 xzc 閱讀(1807) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 马山县| 新泰市| 闸北区| 荔浦县| 康马县| 苏尼特右旗| 铜梁县| 苍溪县| 砚山县| 健康| 庆元县| 丹寨县| 富平县| 霍州市| 西林县| 玛纳斯县| 乌拉特中旗| 胶南市| 临桂县| 晋江市| 新化县| 彝良县| 井冈山市| 萝北县| 永胜县| 福鼎市| 曲阳县| 灵山县| 全椒县| 武胜县| 辉南县| 志丹县| 于田县| 谷城县| 彭阳县| 连江县| 南宁市| 青龙| 石嘴山市| 铜山县| 海伦市|