excel匯出之大量資料 匯出壓縮包

2021-09-01 04:52:40 字數 3464 閱讀 9325

/**

* 匯出專案所有資料

//匯出6萬以上資料。。。

int pagesiz= 50000;//設定每乙個excel檔案匯出的數量

int page;//頁數

//計算分頁

page = count/pagesiz+(count%pagesiz > 0 ? 1:0);

string auto_name = primarykeygenerator.getshortstringkey();//自動的生成乙個檔案碼

是在misc.properties配置檔案中配置的乙個上傳檔案的路徑,在這個路徑下建乙個資料夾

string folder = webutils.getmoduleproperty("upload.excel") + file.separator +auto_name+"_myfolder";

//如果資料夾已存在就刪除,可以根據需求安排是否進行刪除,按照我的需求我不需要刪除,因為我自動生成的檔案碼不會重複

//dropfolderorfile(new file(folder));

file myfolder = new file(folder);

myfolder.mkdir();

//開始從第一頁迴圈匯出乙個檔案到那個資料夾

for(int i = 0; i < page; i++)else if(corpquestionid != null && contactquestionid == null)else if(corpquestionid != null && contactquestionid != null)else if(contactquestionid == null && corpquestionid == null)

listexcelinfo = new arraylist();

excelinfo.add(header.toarray());

excelinfo.addall(pagevalues);

int j=i+1;

//一定要在迴圈裡建workbook,不然會造成資料堆積在記憶體,會溢位

hssfworkbook workbook = new hssfworkbook();

workbook = parser.getwritebook(excelinfo);

// system.gc();//什麼呀?這個不知道是什麼,注釋掉

//生成excel檔案

file f = new file(myfolder+file.separator+reporttitle+"_"+j+".xls");

if(f.exists())else

outputstream os = new fileoutputstream(f);

workbook.write(os);

os.flush();

os.close();

}zipfile(folder);//folder是之前獲取的資料夾路徑

stringbuilder uri = new stringbuilder();

}catch(exception e)

}/**

* 使用poi進行excel的寫入工作

* 注:此方法會在生成的excel工作表的最後多加一列,此列全部為空,不影響檢視,

* 但是對再次解析會有一定問題,再次解析這個生成的excel時poi會認為最後這個空列也是乙個有效列,

* 所以我們需要解析的時候處理一下。

* 這樣做的原因:

* 在使用jdbc-odbc的方式讀取excel時,用poi生成的excel的檔案的最後一列不被識別,

* 無奈之舉,在生成的excel後面多加一列空列,這樣使用jdbc-obdc讀取時就不會有問題了。

* 不過這也引出了上面的注意事項。其實,無論是不是poi生成的excel文件,都需要做類似的判斷的,

* 任何的解析器都不會知道這個空列是否有用,那麼必然會讀取出來由使用者來選擇是否保留。

* * @param values

* @throws ioexception

* ,filenotfoundexception

* @throws ioexception

* @throws

* @throws

* @throws exception

*/public hssfworkbook getwritebook(listvalues) throws ioexception,filenotfoundexception

row++;

}return wb;

}/**

* 刪除資料夾

* @param folder

*/private void dropfolderorfile(file file)

}file.delete();

}/**

* 將指定資料夾打包成zip

* @param folder

* @throws ioexception

*/private void zipfile(string folder) throws ioexception

zipoutputstream zipout = new zipoutputstream(new fileoutputstream(zipfile));

file dir = new file(folder);

file fs = dir.listfiles();

byte buf = null;

if(fs!=null)

zipout.flush();

origin.close();

fileinputstream.close(); }}

zipout.flush();

zipout.close();

}/**匯出

php 匯出excel大量資料方法

通過php輸出流方式匯出 php output是乙個可寫的輸出流,允許程式像操作檔案一樣將輸出寫入到輸出流中,php會把輸出流中的內容傳送給web伺服器並返回給發起請求的瀏覽器 儲存為csv檔案 csv是最通用的一種檔案格式,它可以非常容易地被匯入各種pc 及資料庫中,而xls則是excel專用格式...

EasyPoi 匯出大量資料

1 引入jia包 在pom.xml中引入一下jia包 cn.afterturn easypoi base 4.1.0 cn.afterturn easypoi web 4.1.0 cn.afterturn easypoi annotation 4.1.0 2 如下 一 controller請求 匯出...

Mysql匯出大量資料

outfile 匯出檔案 select name from t1 into outfile tmp test.txt infile 匯入檔案 匯入到表t1中的name列 load data infile tmp test.txt into table t1 name 匯入和匯出的時候可以關閉索引 正...