java寫大數據到 excel文件
來自:javaeye網站biguan 寫道
tidus2005 寫道
biguan 寫道
我同事最近要把1000萬條記錄從數據庫導到excel里,在我的幫助下解決了。
呵呵。原創的。
因每個excel最多放5萬條,所以他把這1000萬條記錄記錄放到了200個excel文件里。用時40分鐘。
采用基本的jdbc技術+io流。
1.先進一個excel文件。填上要的表頭和兩條記錄。然后另存為網頁a.html。
2.用記事本打開網頁a.html,就看到源代碼。把源代碼分成三部分:頭+記錄行+尾。
3.用jdbc訪問數據庫,循環遍歷,每5萬條,用io流寫文件,格式為"xxx.xls”。
a.html的頭代碼+記錄行代碼(已經被5萬條替換)+尾代碼。
呵呵。原創的。
因每個excel最多放5萬條,所以他把這1000萬條記錄記錄放到了200個excel文件里。用時40分鐘。
采用基本的jdbc技術+io流。
1.先進一個excel文件。填上要的表頭和兩條記錄。然后另存為網頁a.html。
2.用記事本打開網頁a.html,就看到源代碼。把源代碼分成三部分:頭+記錄行+尾。
3.用jdbc訪問數據庫,循環遍歷,每5萬條,用io流寫文件,格式為"xxx.xls”。
a.html的頭代碼+記錄行代碼(已經被5萬條替換)+尾代碼。
沒有看太懂你的意思, 用html是干什么?
用java的io寫txt格式的文件,大家都會吧?
其實,也可以用java的io寫xls格式的文件的。關鍵是你得按一定的excel文件格式寫,才能保證生成的是excel文件。
這個格式怎樣得到呢?方法是這樣:
你先建一個excel文件,如a.xls。填上兩條偽數據。然后另存為網頁,即htm格式,如a.htm。
然后,用記事本打開htm格式的a.htm,這樣excel文件格式代碼就暴露在你面前。
剩下的事,呵呵,就是把a.htm源代碼的偽數據部分,替成數據庫里的數據,然后把替換后的整個a.htm源代碼,用java的io寫成一個后綴為xls的文件。就打完收工了。
注意:為了不給內存增加壓力,要把a.htm源代碼分成三部分:頭(偽數據部分 前的代碼) + 偽數據部分 + 尾(偽數據部分 后的代碼)。
先把 頭 寫到文件,并flush。然后是 偽數據部分 ,替一條數據庫里的記錄就寫到文件里,并flush。最后把 尾 寫到文件,并flush。
呵呵,你的方法很好啊,其實我本來也想到直接用io生成XLS文件的,不會我是直接用記事本打開的,結果看到亂碼 - -
還有寫io你提到了重點,就是要經常flush,不然數據大就OOM了。
我的方法也主要就是拼字符串,還有就是從數據庫讀取的數據采用分頁的形式,用list分次讀取出來,結束采用list.clear()一下,及時把資源釋放。
posted on 2009-07-11 23:21 老文 閱讀(3134) 評論(1) 編輯 收藏 所屬分類: 網絡經典文章