首页 > 编程语言 >Java导出多个Excel放在压缩包里

Java导出多个Excel放在压缩包里

时间:2024-03-18 15:55:39浏览次数:19  
标签:zipOutputStream Java Excel new servletOutputStream response 压缩包

之前做过一个导出多个Excel放在压缩包里的需求,当时也是网上找的思路,现在已经找不到之前的文章了,不多废话直接上代码。

public void export(HttpServletRequest request, HttpServletResponse response) {
    String zipFileName = "zipname.zip";
    List<Workbook> workbooks = new ArrayList<>();
    ServletOutputStream servletOutputStream = null;
    try {
        servletOutputStream = response.getOutputStream();
        try {
            response.setCharacterEncoding("utf-8");
            response.setContentType("multipart/form-data");
            response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + URLEncoder.encode(zipFileName, "UTF-8"));
        } catch (UnsupportedEncodingException e) {
            throw new BusinessException("文件名编码异常");
        }

        ZipOutputStream zipOutputStream = new ZipOutputStream(servletOutputStream);
        // 导出的数据
        List<Dto> dtos = new ArrayList<>();
        try {
            for (int i = 0; i < dtos.size(); i++) {
                Workbook workbook = new XSSFWorkbook();
                //向压缩包中添加Excel
                ZipEntry zipEntry = new ZipEntry("excelname" + "-" + i + ".xlsx");
                zipOutputStream.putNextEntry(zipEntry);
                //向zipOutputStream中写入流数据
                workbook.write(zipOutputStream);
            }
            zipOutputStream.flush();
        } catch (Exception e) {
            log.error(e.getMessage());
            e.printStackTrace();
        } finally {
            if (zipOutputStream!=null){
                zipOutputStream.close();
            }
            if (servletOutputStream!=null){
                servletOutputStream.close();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

 

标签:zipOutputStream,Java,Excel,new,servletOutputStream,response,压缩包
From: https://www.cnblogs.com/ZDY-XJ/p/18080581

相关文章

  • java springboot 指定运行端口
    javaspringboot指定运行端口 方法1:修改源代码里的“\src\main\resources\application.properties”文件,增加或修改server.port=8081 方法2:如果是已经打包好的jar包,在运行时指定端口。可以将 “\src\main\resources\application.properties” 文件复制到jar包同......
  • python + xlwings 操作Excel,复制粘贴保留格式
    在使用python处理Excel时,需求是要保留Excel内的格式(例如字体,大小,背景颜色,函数公式....),试了其它几个库,都没达到效果,偶然发现了xlwings,可以达到我所需要的效果。importxlwingsasxwfromxlwings.constantsimportPasteType打开Excel文件workbook=xw.Book('example.xlsx')......
  • Linux Java调用 海康sdk报 Unable to load library '/home/slife/bsmt/HCNetSDK_linux
    1、问题在Linux下java调研libPlayCtrl.so文件失败 解决方案:sudovim~/.bashrc 在该文件末尾追加:exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/slife/bsmt/HCNetSDK_linux64/刷新一下source~/.bashrcok参考链接 https://www.cnblogs.com/kikyoqiang/p/14911373.......
  • BigDecimal值在java比较的两种方法
    1、使用equals()方法不但要求两个BigDecimal的值相等,还要求它们的scale()相等。BigDecimald1=newBigDecimal("123.45");BigDecimald2=newBigDecimal("123.45000");System.out.println(d1.equals(d2));//false,因为scale不同System.out.println(d1.equa......
  • 【编程向导】JavaScript-基础语法-解构赋值
    梦里繁花落尽,此情未央,此意难忘,弦虽断,曲犹扬。!与技术共同呼吸,与程序员共命运。世树科技承“技驱动,理致胜”理念、国风编程。解构赋值解构赋值(Destructing)语法是一个JavaScript表达式,这使得可以将值从数组或属性从对象提取到不同的变量中。数组的解构赋值varfoo......
  • 【Java】i18n国际化解决方案:通过AOP切面实现多语言的配置
    需求背景国际化多语言配置。相较于常规的方法,这次采取了切面的方式,来完成所有字段->不同语言的映射。大致逻辑:按常规的国际化,写一个获取语言的方法:getMsg(Stringcode);写一个深层遍历对象的方法traverseObject(Objectobj),通过反射,获取所有类型为字符串的字段,并实现对字......
  • Java面试问题集合,Java面试题合集
    前言:说到算法,相信每一个程序员和接触过程序员的朋友都不会陌生,直到现在算法一直占着面试必问的地位,而算法面试也仍是当前最适合公司筛选程序员的方法之一,在阿里,字节跳动、华为等公司带动下,无论是求职者还是面试官,都逐渐认识到算法面试其实是相对高效、准确且公平的筛选机制......
  • 后端程序员学JavaWeb必备小知识
    小知识1.判断前端或后端的关键在于内容由哪个解析对象来解析。如果是由浏览器解析,那就是前端;如果是由后台的JDK/Tomcat/Nginx等来解析和执行,那就是后端。2.后端成员掌握前端程度:(1)基本使用,能看懂,能维护即:具备基本的前端知识,包括HTML、CSS和JavaScript的基础概念、语法......
  • 我的腾讯Java面试经历分享,Java常见笔试题目
    珍藏版(1)——Mybatis入门1.什么是MyBatis2.为什么我们要用Mybatis?3.Mybatis快速入门3.1导入开发包3.2准备测试工作3.3创建mybatis配置文件3.4编写工具类测试是否获取到连接3.5创建实体与映射关系文件3.6编写DAO4.Mybatis工作流程5.完成CRUD操作5.1......
  • [Java、Android面试]_08_强软弱虚四种引用及应用场景
    本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。整理成了面试系列,由于时间有限,每天整理一点,后续会陆续分享出来,感兴趣的朋友可关注+收藏文章目录1.强引用(默认的引用形式)2.软引用3.弱引用4.虚引用引用在java中......