導出多個excel,打包成zip壓縮包進行下載~~~~~~~~~

項目需求:

將指定內容按任務分別導出excel。

– 這裏肯定要批量導出纔行了,那麼用壓縮包,沒毛病…

直接貼代碼:

/**
     * 以壓縮包的方式下載excel
     * @param response
     * @param workbookMap
     */
    public static void downloadExcelForZip(HttpServletResponse response,Map<String,Workbook> workbookMap,String zipName){
        // 文件名外的雙引號處理firefox的空格截斷問題
        try {
            response.setContentType("application/*");
            response.setHeader("content-disposition", "attachment;filename=" + new String(zipName.getBytes("gb2312"), "ISO8859-1"));
            response.setCharacterEncoding("UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        try {
            ServletOutputStream outputStream = response.getOutputStream();
            ZipOutputStream out = new ZipOutputStream(outputStream);
            for(String fileName:workbookMap.keySet()){
                Workbook workbook = workbookMap.get(fileName);
                ZipEntry entry = new ZipEntry(fileName);
                out.putNextEntry(entry);
                //這裏講一下,workBook.write會指定關閉數據流,如果這裏直接用workbook.write(out),下次就會拋出out已被關閉的異常,所有用ByteArrayOutputStream來拷貝一下。
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                workbook.write(bos);
                bos.writeTo(out);
                // 關閉輸入流
                out.closeEntry();
            }
            if(out!=null){
                out.flush();
                out.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章