Die Hauptverwendung ist der ZIP -Stream org.apache.tools.zip.zipoutputStream. Hier wird Execl als Beispiel verwendet.
IDEE Schreiben Sie zuerst den ZIP -Stream in den HTTP -Antwortausgangsstrom und schreiben Sie den Excel -Stream in den ZIP -Stream (Sie müssen keine Dateien generieren und hier packen. Lesen und schreiben Sie einfach die EXECL -Vorlage und geben Sie die Daten in den ZIP -Stream aus und setzen Sie den Dateinamen für jeden Stream ein.)
Zum Beispiel: 1.XLS, 2.XLS, 3.xLS -Dateien existieren in der EXECL -Datei unter dem Projekt WebApp
1.Kontroller
@RequestMapping (value = "/exportall", method = requestMethod.get) public void exportall () löscht ioException {try {httpServletResponse response = this.getResponse (); response.setContentType ("Anwendung/Oktett-Stream"); String execlname = "report"; response.addHeader ("Content-Disposition", "Attachment; Dateiname =" +New String (execlname.getBytes (), "ISO-8859-1") +". Zip"); OutputStream out = response.getOutputStream (); testService.exportall (out); } catch (Ausnahme e) {....}}2. Service
importieren java.io.outputstream; import org.apache.poi.hssf.usmodel.hssfsheet; import org.apache.poi.hssf.usmodel.hssfworkbook; Java.io.FileInputStream; importieren javax.servlet.http.httpletRequest; import org.apache.poi.hssf.usermodel.hssfcellstyle; org.apache.poi.hssf.usermodel.hssfworkbook; import org.apache.poi.poifs.filesystem.poifsFileSystem; import org.springframework.web.context.request.requestContexTHOLDER; org.springframework.web.context.request.servletrequestattributes; public boolean exportall (outputStream) {ZipoutputStream zipstream = null; HSSFWORKBOOK WB = NULL; try {list <Test> datas = testService.gettestData (); zipstream = neu zipoutputStream (out); // Hier gibt der ZIP -Stream auf den HttPresponse -Stream für (int i = 0; i <3; i ++) {wb = poiutil.getworkbook (i); // 0,1,1,2.xls Datei HSSFSheet Sheet Sheet = Wb.Getsheetat (0,1,1,2) aus. testService.setSheet (Blatt, Daten); // ... Dateiinhaltsverarbeitungsoperation Zipentry zipEntry = new Zipentry (neuer String ("Dateiname xxx" .getBytes (), "utf-8")+". xls"); // Nennen Sie es selbst, hier ist 1, 2, 3 zipstream.putNextEntry (Zipentry); WB.Write (Zipstream); // Dies ist die Schleife, die EXECL jedes Mal, wenn zipstream.flush () an den Zippack schreibt; }} catch (Ausnahme e) {neue sysexception (errorConstants.common_System_error, e); } endlich {try {if (wb! = null) {wb.close (); } if (zipstream! = null) {zipstream.close (); } out.flush (); out.close (); } catch (ioException e) {neue sysexception (errorConstants.common_close_error, e); }}} public static HSSFWorkbook Getworkbook (String BH) {try {String line = Datei.Separator; ServletRequestattributes areQuestAttributes = (ServletRequestattributes) RequestContexTHolder.GetRequestAttributes (); HttpServletRequest request = arequestattributes == null? Null: arequestattributes.getRequest (); String webpath = request.getServletContext (). GetRealPath ("/"); Datei Datei = neue Datei (WebPath+Zeile+"Excel"+Zeile+BH+". XLS"); PoifsFilesystem poifsFilesystem = new poifsFilesystem (New FileInputStream (Datei)); HSSFWORKBOOK WB = NEW HSSFWORKBOOK (poifsFilesystem); wb zurückgeben; } catch (Ausnahme E) {neue sysexception (errorConstants.Common_System_error, e); }}Das Endergebnis generiert einen Bericht.zip, der 3 Dateien enthält: 1.xls, 2.xls, 3.xls
Zusammenfassen
Das obige ist der Export für Java -Stapeldatei -Komprimierung und Download in den vom Editor eingeführten lokalen Beispielcode. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!