Основным использованием является Zip Stream org.apache.tools.zip.zipoutputstream. Здесь excl используется в качестве примера.
Идея Сначала запишите потоковое молнию в выходной поток вывода ответа HTTP, а затем запишите поток Excel в потоку ZIP (вам не нужно генерировать файлы, а затем упаковать их здесь. Просто прочитайте и запишите шаблон EXECL и выводите данные в потоку ZIP и установите имя файла для каждого потока)
Например: 1.xls, 2.xls, файлы 3.xls существуют в файле execl в рамках проекта WebApp
1. Контроллер
@Requestmapping (value = "/exportall", method = requestMethod.get) public void exportall () бросает ioException {try {httpservletresponse response = this.getResponse (); response.setContentType («Приложение/октет-поток»); 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 (Exception 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. java.io.fileinputstream; import javax.servlet.http.httpservletrequest; import org.apache.poi.hssf.usermodel.hssfcellstyle; импорт org.apache.poi.hssf.usermodel.hssfsheet; org.apache.poi.hssf.usermodel.hssfworkbook; import org.apache.poi.poifs.filesystem.poifsfilesystem; импорт 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); // здесь выводит потоковой Zip в потоку httpresponse для (int i = 0; i <3; i ++) {wb = poiutil.getworkbook (i); // Получить 0,1,2.xls file hssfsheet sheet = wb.getsheetatat (0); testservice.setsheet (лист, datas); // ... обрабатывать работу файла операция Zipentry Zipentry = new Zipentry (New String ("Имя файла xxx" .getBytes (), "UTF-8")+". XLS"); // Назовите это самостоятельно, вот 1, 2, 3 Zipstream.putNextEntry (Zipentry); wb.write (Zipstream); // Это цикл, который записывает execl в Zippack каждый раз, когда Zipstream.flush (); }} catch (Exception e) {бросить новое 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 arquestattributes = (servletrequestattributes) request conctextholder.getrequestattributes (); Httpservlectrequest request = arquestattributes == null? Null: arquestattributes.getRequest (); String webpath = request.getServletContext (). GetRealPath ("/"); File file = new File (webpath+line+"Excel"+line+bh+". Xls"); Poifsfilesystem poifsfilesystem = new poifsfilesystem (new FileInputStream (файл)); HSSFWorkBook WB = новый HSSFWorkBook (POIFSFILESYSTEM); вернуть WB; } catch (Exception e) {бросить новое sysexception (errorconstants.common_system_error, e); }}Окончательный результат генерирует отчет.zip, который содержит 3 файла: 1.xls, 2.xls, 3.xls
Суммировать
Выше приведено экспорт сжатия и загрузки файлов Java PATCH и загрузку в локальный пример кода, представленный редактором. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!