SpringBoot动态生成多个Excel文件以压缩包.zip格式下载

2021-06-03

来源:blog.csdn.net/qq_40437152/article/details/111411364

前言

文件下载的场景很多(还不是需求丰富嘛~),那么什么是动态生成文件呢,就是用户选择文件内容,服务器端根据选择的数据生成某个格式的文件然后下载到客户端。单个嘛直接下载,多个打包下载咯!

项目场景

项目中有个数据导出excel的需求,而且是批量,那么就要打包咯

解决步骤

基本实现如下:

  1. 生成文件
  2. 保存到临时目录 || 缓存到内存中
  3. 将文件打包下载

我不想废话了,上代码:

直接把文件输出流放到压缩流ZipOutputStream

 List<String> fields = new ArrayList<>();
        fields.add("字段1");
        fields.add("字段2");
        fields.add("字段3");
        HSSFWorkbook workbook = excelUtil.getNewExcel("压缩文件测试", fields);
        try {
            response.setContentType("application/zip; charset=UTF-8");
            //返回客户端浏览器的版本号、类型
            String agent = request.getHeader("USER-AGENT");
            String downloadName = "压缩文件测试.zip";
            //针对IE或者以IE为内核的浏览器:
            if (agent.contains("MSIE") || agent.contains("Trident")) {
                downloadName = java.net.URLEncoder.encode(downloadName, "UTF-8");
            } else {
                downloadName = new String(downloadName.getBytes("UTF-8"), "ISO-8859-1");
            }
            response.setHeader("Content-disposition""attachment;filename=" + downloadName);
   
            ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream());
   //多个从这里就可遍历了
   // --start
            ZipEntry entry = new ZipEntry("第一个文件名.xls");
            zipOutputStream.putNextEntry(entry);

            ByteOutputStream byteOutputStream = new ByteOutputStream();
            workbook.write(byteOutputStream);
            byteOutputStream.writeTo(zipOutputStream);
//            zipOutputStream.write(workbook.getBytes());
            byteOutputStream.close();
            zipOutputStream.closeEntry();
            // --end
            zipOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

生成excel文件也贴一下,如下:

public static HSSFWorkbook getNewExcel(String formName, List<String> fields) {
        //新建excel对象
        HSSFWorkbook workbook = new HSSFWorkbook();
        //新建工作表
        HSSFSheet sheet = workbook.createSheet(formName);
        // 设置表格默认列宽度为20个字节
        sheet.setDefaultColumnWidth((short20);
        // 生成一个样式
        HSSFCellStyle style = workbook.createCellStyle();
        // 生成一个字体
        HSSFFont font = workbook.createFont();
        font.setFontHeightInPoints((short12);
        //字体应用到当前样式
        style.setFont(font);
        //创建表格行
        HSSFRow row = sheet.createRow(0);
        //设置表单名称
        row.createCell(0).setCellValue(formName);
        if (fields.size() - 1 > 0) {
            //合并单元格
            sheet.addMergedRegion(new CellRangeAddress(000, fields.size() - 1));
        }
        HSSFRow row1 = sheet.createRow(sheet.getLastRowNum() + 1);
        //设置列标题行
        for (int i = 0; i < fields.size(); i++) {
            row1.createCell(i).setCellValue(fields.get(i));
        }
        return workbook;
    }

一些实践总结,欢迎指正!

推荐好文

相关文章

SpringMVC下Excel文件的上传下载

2021-06-03
(三)View类这个类在下载时用到,在Spring渲染页面时使用自定义的View类进行Excel的相关处理. Java代码 package com....

Spring Boot+Spring security+Thymeleaf+Elasticsearch博客系统视频教程免费下载

2021-06-03
这是一个基于Spring Boot+Spring security+Thymeleaf+Elasticsearch+JPA+Bootstrap+Mysql等实现的一个多用户,多角色的博客系统....

狂神说SpringMVC08:拦截器+文件上传下载

2021-06-03
Spring MVC为文件上传提供了直接的支持,这种支持是用即插即用的MultipartResolver实现的.Spring MVC使用Apache Commons ...

春天真的好耀眼 | Springtime Marks 春之面具亲子手工免费下载(女王节福利哦)...

2021-06-03
公众号对话框回复:春天,可以免费下载这个模板制作面具所需的材料非常简单;纸模版;剪刀;蜡笔或水彩笔;打洞工具(没有可以...

高可用的Spring FTP上传下载工具类(已解决上传过程常见问题)

2021-06-03
cnblogs.com/chenkeyu/p/8001624.html前言最近在项目中需要和ftp服务器进行交互,在网上找了一下关于ftp上传下载的工具类,大致有...

SpringBoot动态生成多个Excel文件以压缩包.zip格式下载

2021-06-03
来源:blog.csdn.net/qq_40437152/article/details/111411364前言文件下载的场景很多(还不是需求丰富嘛~),那么什么是动态生成文...

SpringBoot动态生成多个Excel文件以压缩包.zip格式下载

2021-06-03
单个嘛直接下载,多个打包下载咯!项目场景项目中有个数据导出excel的需求,而且是批量,那么就要打包咯解决步骤基本实现如下:...

springboot文件上传和下载(批量_单个)

2021-06-03
前言用springboot + jpa,批量上传、下载,一般批量下载处理方式都是将多个文件压缩成一个压缩包,然后在下载,主要的坑在于本地...

springboot文件上传和下载

2021-06-03
文件上传下载,没事儿练习哈手感链接:https://pan.baidu.com/s/1rx4gkHwLKJRxmzvvhY21JA提取码:zm13

春节习俗课件:the Chinese Spring Festival(附微课下载)

2021-06-03
(点击查看)明老师最近发现了一个叫做Sally Barker的歪果仁做了一个“Fourteen Days of the Chinese Spring Festival”的课件,特别...

随机推荐