您的当前位置:首页正文

Excel打包zip,HttpServletResponse写回

来源:花图问答

    public void export(HttpServletRequest request, HttpServletResponse response) throws ParseException, IOException {
        String beginDateStr = request.getParameter("beginDate");
        String endDateStr = request.getParameter("endDate");
        //有end时间,进行批量导出
        logger.error("export 批量导出对账文件beginDateStr ={},endDateStr={}",new Object[] {beginDateStr,endDateStr});
        if(null != endDateStr && endDateStr.trim().length() > 0 && !endDateStr.equals(beginDateStr)) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            Date dBegin = sdf.parse(beginDateStr);
            Date dEnd = sdf.parse(endDateStr);
            //获得时间区间所有日期
            List<String> datas = DateUtil.findDatesFordd(dBegin, dEnd, sdf);
            
            OutputStream out = null;
            response.addHeader("Content-Disposition",
                    new StringBuffer("attachment;filename=\"").append(URLEncoder.encode("zip文件名", "utf-8"))
                    .append(beginDateStr).append("-").append(endDateStr).append(".zip").append("\"").toString());
            out = response.getOutputStream();
            ZipOutputStream zipos = new ZipOutputStream(out);  

            for (String date : datas) {
                HSSFWorkbook workbook = 生成excel();
                ZipEntry entry = new ZipEntry("excel文件名"+date + ".xls");
                zipos.putNextEntry(entry);
                workbook.write(zipos);
            }
            zipos.flush();
            zipos.close();
            return;
        }
        //单个excel
        HSSFWorkbook workbook = 生成excel();
        OutputStream out = null;
        response.addHeader("Content-Disposition",
                new StringBuffer("attachment;filename=\"").append(URLEncoder.encode("excel文件名", "utf-8"))
                        .append(beginDateStr).append(".xls").append("\"").toString());
        out = response.getOutputStream();
        workbook.write(out);
    }