• 【Excel导出】(亲测可用)使用实现Hutool工具类将list对象数组导出的简单实现


    业务场景:很多项目中,都会有报表统计功能,同时为了更加人性化(产品的要求的)要加入查询结果导出功能,之前做过导出word模
    板,这次是通过Hutool工具类将报表导出Excel。

    一、引入Hutoolpoi-ooxml相关的依赖

      		 <dependency>
                <groupId>cn.hutoolgroupId>
                <artifactId>hutool-allartifactId>
                <version>${hutool.version}version>
            dependency>
            <dependency>
                <groupId>org.apache.poigroupId>
                <artifactId>poi-ooxmlartifactId>
                <version>5.2.2version>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    导出实现简单版

    二、实现代码

    2.1 Service层

    
    @Override
    public ResultMsg exproList(Object object,HttpServletRequest request, HttpServletResponse response) {
    
    		//这里拿到你要导出的list 集合
    		ArrayList<Object> list = new ArrayList<>();
    		
            ExcelWriter writer = ExcelUtil.getWriter();
            // 设置只导出有别名的字段
            writer.setOnlyAlias(true);
    
            writer.addHeaderAlias("name", "名称");
            writer.addHeaderAlias("property", "属性");
            writer.addHeaderAlias("type", "类别");
            writer.addHeaderAlias("useObject", "作用对象");
            writer.addHeaderAlias("calcMethod", "计算方法");
            writer.addHeaderAlias("score", "分数");
            writer.addHeaderAlias("operate", "操作");
            writer.addHeaderAlias("userId", "操作人员");
            writer.addHeaderAlias("createTime", "创建时间");
    
            writer.write(list, true);
            //out为OutputStream,需要写出到的目标流
            //response为HttpServletResponse对象
            response.setContentType("application/vnd.ms-excel;charset=utf-8");
            //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
            String fileName="示例名称";
            try {
                String userAgent = request.getHeader("user-agent");
    //                response.setHeader("Content-disposition", "attachment; filename=" + new String("部门账单明细".getBytes("gb2312"), "ISO8859-1"));
                if (userAgent != null && userAgent.indexOf("Firefox") >= 0 ||
                        userAgent.indexOf("Chrome") >= 0 ||
                        userAgent.indexOf("Safari") >= 0) {
                    fileName= new String((fileName).getBytes(), "ISO8859-1");
                } else {
                    fileName= URLEncoder.encode(fileName,"UTF8"); //其他浏览器
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            log.info("fileName : " + fileName);
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");
            ServletOutputStream out = null;
            try {
                out = response.getOutputStream();
                writer.flush(out, true);
            } catch (IOException e) {
                log.error(e);
            } finally {
                // 关闭writer,释放内存
                writer.close();
            }
            //此处记得关闭输出Servlet流
            IoUtil.close(out);
    
            return null;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    三、参考阅览

    常用工具类Hutool(一)的导入导出功能的实现
    poi系列(二):通过poi、poi-ooxml读取写出excel
    Hutool介绍(详)

  • 相关阅读:
    java#5(数组)
    Kubernetes 基于 helm 部署高可用 harbor
    智慧工地管理系统平台软件源码
    html 菜单点击切换样式,菜单<a> 控制iframe
    QT基础入门【QSS】继承、命名空间中的小部件、QObject 属性介绍
    count详述
    (四)Vue之数据绑定
    [李宏毅老师深度学习视频] 类神经网络训练不起来的四大原因 【手写笔记】
    Windows 的Powershell取得管理员权限
    轻量封装WebGPU渲染系统示例<19>- 使用GPU Compute材质多pass实现元胞自动机之生命游戏(源码)
  • 原文地址:https://blog.csdn.net/qq_48424581/article/details/128135369