//action 方法
public String createExcelByStayOrQuitForZip() throws Exception {
if(fileName == null || fileName.equals("")){
fileName = new String("表名".getBytes(), "ISO8859-1");
}else {
fileName = new String(fileName.getBytes(), "ISO8859-1");
}
response.setCharacterEncoding("UTF-8");
response.setContentType("application/vnd.ms-excel");
response.addHeader("Content-Disposition", "attachment;filename=" + fileName + ".zip");
//tempFolder = session.get("tempFolder") + "";
String secondId = request.getParameter("secondId");
String firstId = request.getParameter("firstId");
String archiveNubers=request.getParameter("archiveNumbers");
iExcelOptionForPersonService.writeExcelForTheDemocraticPartyPersonagesForZip(response, archiveNubers, ""+session.get("tempFolder")+File.separator+"zip"+File.separator+"tempFolder",secondId,firstId);
return null;
}
//调用导出 由于java的zip打包文件有中文时会出现乱码问题 这样的话可以引进ant,jar包 使用它的zipOutPutstream 打包
ZipOutputStream out = new ZipOutputStream(response.getOutputStream());
out.setEncoding("gbk");
for(String archiveNumber:archiveNumbers.split(",")){
byte[] buffer1 = new byte[1024];
File filefolder = new File(tempFolder);
if(!filefolder.exists()){
filefolder.mkdirs();
}
Map<String, List<InfoValue>> map = selectAllInfoByArchiveNumber(archiveNumber);
String nameForzip=map.get("01-01_001")!=null&&map.get("01-01_001").get(0).getvVarchar()!=null?map.get("01-01_001").get(0).getvVarchar():"";
File file = new File(tempFolder+File.separator+nameForzip+"-"+archiveNumber+".xls");
file.deleteOnExit();
file.createNewFile();
----------------------------------------------------------------------------
FileInputStream fis = new FileInputStream(file);
out.putNextEntry(new ZipEntry(file.getName()));
int len;
while ((len = fis.read(buffer1)) > 0) {
out.write(buffer1, 0, len);
}
out.closeEntry();
fis.close();