L'utilisation principale est le flux zip org.apache.tools.zip.zipOutputStream. Ici, EXECL est utilisé comme exemple.
Idée Écrivez d'abord le flux ZIP dans le flux de sortie de réponse HTTP, puis écrivez le flux Excel dans le flux ZIP (vous n'avez pas besoin de générer des fichiers, puis de les emballer ici. Lisez et écrivez le modèle EXECL et publiez les données dans le flux ZIP, et définissez le nom du fichier pour chaque flux)
Par exemple: 1.xls, 2.xls, 3.xls Les fichiers existent dans le fichier EXECL sous le projet WebApp
1.Contrôleur
@RequestMapping (value = "/ exportall", méthode = requestMethod.get) public void exportall () lance ioException {try {httpservletResponse réponse = this.getResponse (); Response.SetContentType ("Application / Octet-Stream"); String eeclName = "Rapport"; Response.AddHeader ("Content-Disposition", "Pixe; FileName =" + Nouvelle String (eeclName.getBytes (), "ISO-8859-1") + ". Zip"); OutputStream out = réponse.getOutputStream (); TestService.Exportall (Out); } catch (exception e) {....}}2. Service
import java.io.outputstream; import org.apache.poi.hssf.usermodel.hssfsheet; import org.apache.poi.hssf.usermodel.hssfworkbook; import org.apache.tools.zip.ziperty; import java. 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.servletRequestAttributes; public boolean exportall (outputStream out) {zipOutputStream zipstream = null; Hssfworkbook wb = null; try {list <test> dataS = testService.getTestData (); ZipStream = new ZipOutputStream (out); // montre le flux zip vers le flux HTTPResponse pour (int i = 0; i <3; i ++) {wb = poiUtil.getworkbook (i); // obtenir 0,1,2.2.xlse file hssfsheet sheet = wb.getSheetat (0); TestService.SetSheet (feuille, données); // ... Gire File Content Operation Zipentry Zipentry = new Zipentry (new String ("Nom de fichier xxx" .getBytes (), "utf-8") + ". xls"); // Nommez-le vous-même, voici 1, 2, 3 zipstream.putNexTentry (zipentry); wb.write (zipstream); // c'est la boucle qui écrit EXECL au zippack à chaque fois que Zipstream.flush (); }} catch (exception e) {lancer une nouvelle sysexception (errorConstants.common_system_error, e); } enfin {try {if (wb! = null) {wb.close (); } if (zipstream! = null) {zipstream.close (); } out.flush (); out.close (); } catch (ioException e) {Throw New Sysexception (errorConstants.Common_close_error, e); }}} public static hssfworkbook getworkbook (String bh) {try {string line = file.separator; ServletRequestAttributes arequestAttributes = (servleRequestAttributes) requestContexTholder.getRequestAttributes (); HttpServLetRequest request = arequestAttributes == null? Null: arequestAttributes.getRequest (); String webPath = request.getServletContext (). GetRealPath ("/"); File file = new File (webPath + line + "excel" + ligne + bh + ". Xls"); POIFSFILESYSTEM POIFSFILESYSTEM = NOUVEAU POIFSFILESYSTEM (nouveau FileInputStream (fichier)); HSSFWorkBook WB = nouveau HSSFWorkBook (POIFSFILESYSTEM); retourner wb; } catch (exception e) {lancer une nouvelle sysexception (errorConstants.common_system_error, e); }}Le résultat final génère un rapport.zip, qui contient 3 fichiers: 1.xls, 2.xls, 3.xls
Résumer
Ce qui précède est l'exportation et le téléchargement de la compression de fichiers Java Batch vers un exemple de code local introduit par l'éditeur. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!