主な用途は、zipストリームorg.apache.tools.zip.zipoutputStreamです。ここでは、Execlが例として使用されます。
アイデア最初にzipストリームをHTTP応答出力ストリームに書き込み、次にExcelストリームをzipストリームに書き込みます(ファイルを生成してここでパッケージ化する必要はありません。Execlテンプレートを読み取り、ZIPストリームに出力し、各ストリームのファイル名を設定します)
例:1.xls、2.xls、3.xlsファイルは、プロジェクトWebAppの下にexeclファイルに存在します
1.コントローラー
@RequestMapping(value = "/exportall"、method = requestmethod.get)public void exportall()throws ioexception {try {httpservletresponse response = this.getResponse(); Response.setContentType( "Application/Octet-Stream"); string execlname = "Report"; Response.Addheader( "Content-Disposition"、 "Attachment; filename =" +new String(execlname.getBytes()、 "ISO-8859-1") +"。zip"); outputStream out = response.getOutputStream(); testservice.exportall(out); } catch(例外e){....}}2。サービス
java.io.outputStreamをインポート; import org.apache.poi.hssf.usermodel.hssfsheet; import org.apache.poi.hssf.usermodel.hssfworkbook; Import org.apache.tools.zip.zipentry; Import org.apach.zip.ziptuttream; java.io.fileinputStream; Import javax.servlet.http.httpservletrequest; import org.apache.poi.hssf.usermodel.hssfcellstyle; Import org.apache.poi.hssf.usermodel.hssfsheet; import; org.apache.poi.hssf.usermodel.hssfworkbook; Import org.apache.poi.poifs.filesystem.poifsfileSystem; import org.springframework.web.context.request.request.requestcontextholder; Import; org.springframework.web.context.request.servletrequestattributes; public boolean exportall(outputstream out){zipoutputstream zipstream = null; hssfworkbook wb = null; try {list <test> datas = testservice.getTestData(); zipstream = new zipoutputStream(out); //ここでは、zipストリームを(int i = 0; i <3; i ++){wb = poiutil.getworkbook(i); // get 0,1,2.xls file hssfsheet sheet = wb.getsheet(0); testservice.setsheet(シート、データ); // ...ハンドルファイルコンテンツ操作zipentry zipentry = new zipentry(new String( "ファイル名xxx" .getbytes()、 "utf-8")+"。xls"); //自分で名前を付けてください、ここに1、2、3 zipstream.putnextententry(zipentry); wb.write(zipstream); //これは、zipstream.flush(); }} catch(Exception e){throw new sysexception(errorconstants.common_system_error、e); }最後に{try {if(wb!= null){wb.close(); } if(zipstream!= null){zipstream.close(); } out.flush(); out.close(); } catch(ioException e){新しいsysexception(errorconstants.common_close_error、e); }}} public static hssfworkbook getworkbook(string bh){try {string line = file.separator; ServletRequestattributes arequestattributes =(servletRequestattributes)requestContextholder.getRequestattributes(); httpservletrequest request = arequestattributes == null?null:arequestattributes.getRequest(); string webpath = request.getServletContext()。getRealPath( "/");ファイルfile = new file(webpath+line+"excel"+line+bh+"。xls"); poifsfilesystem poifsfilesystem = new poifsfilesystem(new fileinputStream(file)); hssfworkbook wb = new hssfworkbook(poifsfilesystem); WBを返します。 } catch(Exception E){Throw new sysexception(errorconstants.common_system_error、e); }}最終結果は、1.xls、2.xls、3.xlsの3つのファイルを含むレポートを生成します。
要約します
上記は、編集者によって導入されたローカルサンプルコードへのJavaバッチファイル圧縮エクスポートとダウンロードです。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!