前言文件下载的场景很多(是不是需求丰富啊~),那么什么是动态生成文件呢,就是用户选择文件的内容,服务器根据生成的文件生成一定格式的文件选定的数据,然后将其下载到客户端。直接下载单个代码,下载多个包!项目场景项目中需要导出数据到excel,而且是批量的,所以需要打包。基本实现步骤如下:生成文件并保存到临时目录||:直接把文件输出流放到压缩流中ZipOutputStreamListfields=newArrayList<>();fields.add("字段1");fields.add("字段2");fields.add("字段3");HSSFWorkbookworkbook=excelUtil.getNewExcel("压缩文件测试",fields);尝试{response.setContentType("application/zip;charset=UTF-8");//返回客户端浏览器的版本号和类型Stringagent=request.getHeader("USER-AGENT");StringdownloadName="压缩文件test.zip";//对于IE或以IE为核心的浏览器:if(agent.contains("MSIE")||agent.contains("Trident")){downloadName=java.net.URLEncoder.encode(downloadName,"UTF-8");}else{下载名称=newString(downloadName.getBytes("UTF-8"),"ISO-8859-1");}}response.setHeader("Content-disposition","attachment;filename="+downloadName);neweputZipStramStramOutputStreamzip(response.getOutputStream());//从这里可以遍历多个//--startZipEntryentry=newZipEntry("第一个文件名.xls");zipOutputStream.putNextEntry(条目);am由eStrnewByteOutputByteOutputStream()输出;workbook.write(byteOutputStream);byteOutputStream.writeTo(zipOutputStream);//zipOutputStream.write(workbook.getBytes());byteOutputStream.close();zipOutputStream.closeEntry();//--结束zipOutputStream。关闭();}catch(IOExceptione){e.printStackTrace();}生成excel文件并粘贴,如下:publicstaticHSSFWorkbookgetNewExcel(StringformName,Listfields){//新建一个excel对象HSSFWorkbookworkbook=newHSSFWorkbook();//新建一个工作表HSSFSheetsheet=workbook.createSheet(formName);id//设置表格的默认列宽为20字节(CountDelums.Wset(short)20);//生成样式HSSFCellStylestyle=workbook.createCellStyle();//生成字体HSSFFontfont=workbook.createFont();font.setFontHeightInPoints/12(应用于当前字体)style.setFont(font);//创建表格行HSSFRowrow=sheet.createRow(0);//设置表单名称row.createCell(0).setCellValue(formName);if(fields.size()-1>0){//合并单元格sheet.addMergedRegion(newCellRangeAddress(0,0,0,fields.size()-1));}HSSFRowrow1=sheet.createRow(sheet+.getLastRowNum/1)()列标题行for(inti=0;i