El uso principal es la transmisión ZIP org.apache.tools.zip.zipoutputstream. Aquí, EXECL se usa como ejemplo.
Idea primero escriba el flujo zip en la transmisión de salida de respuesta http, y luego escriba la transmisión de Excel en la transmisión ZIP (no necesita generar archivos y luego empaquetarlos aquí. Simplemente lea y escriba la plantilla EXECL y emita los datos en la transmisión ZIP, y configure el nombre del archivo para cada secuencia)
Por ejemplo: 1.xls, 2.xls, 3.xls existen archivos en el archivo EXECL en el proyecto WebApp WebApp
1.Controller
@RequestMapping (valor = "/exportall", método = requestmethod.get) public void exportAll () lanza ioexception {try {httpServletResponse respuesta = this.getResponse (); respuesta.setContentType ("Application/Octet-stream"); String ExeclName = "Informe"; Respuesta.AddHeader ("Content-Disposition", "Attachment; FileName =" +New String (ExeclName.getBytes (), "ISO-8859-1") +". Zip"); OutputStream out = Response.getOutputStream (); testService.exportall (out); } catch (excepción e) {....}}2. Servicio
import java.io.outputStream; import org.apache.poi.hssf.usermodel.hssfsheet; importar org.apache.poi.hssf.usermodel.hssfworkbook; import opache.tools.zip.zipEntry; import org.apache.tool.zip.ziputsam; 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.requestcontextholder; import org.springframework.web.context.request.servletRequestTributes; public boolean exportall (outputStream out) {ZipOutputStream zipstream = null; Hssfworkbook wb = null; Pruebe {List <Stest> Datas = testService.gettestData (); zipStream = new ZipOutputStream (Out); // Aquí está emitiendo la transmisión ZIP a la transmisión httpResponse para (int i = 0; i <3; i ++) {wb = poiutil.getworkbook (i); // get 0,1,12.. testService.setSheet (hoja, datos); // ... manejar el contenido del archivo operación zipentry zipentry = new ZipEntry (new String ("Nombre de archivo XXX" .getBytes (), "UTF-8")+". XLS"); // Nómbrelo usted mismo, aquí hay 1, 2, 3 zipstream.putNextEntry (ZipEntry); wb.write (zipstream); // Este es el bucle que escribe execl en el zippack cada vez que zipstream.flush (); }} Catch (Exception e) {Throw SySexCeption (ErrorConstants.common_system_error, e); } finalmente {try {if (wb! = null) {wb.close (); } if (zipstream! = null) {zipstream.close (); } out.flush (); out.close (); } catch (ioException e) {tire nueva sysexception (errorconstants.common_close_error, e); }}} public static hssfworkbook getWorkbook (String bh) {try {string line = file.separator; ServLetRequestAttributes areQuestatTributes = (ServLetRequestAttributes) requestContexTholder.getRequestatTributes (); HttpservletRequest solicitud = areQuestattributes == NULL? String webPath = request.getServletContext (). GetRealPath ("/"); Archivo archivo = nuevo archivo (webpath+línea+"Excel"+línea+bh+". Xls"); PoifsFilesystem PoifsFilesystem = new PoifsFilesystem (new FileInputStream (File)); Hssfworkbook wb = new hssfworkbook (poifsfilesystem); devolver WB; } Catch (Exception e) {Throw SySException (ErrorConstants.common_system_error, e); }}El resultado final genera un informe. ZIP, que contiene 3 archivos: 1.xls, 2.xls, 3.xls
Resumir
Lo anterior es la exportación de compresión del archivo por lotes Java y la descarga al código de muestra local introducido por el editor. Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!