Hutool导出页面数据?教你一招

通常在Java Web的项目中,我们会有导出数据的需求。因此,在这里我就通过一个简单的小Demo来演示一下如何通过Java的Hutool工具来将页面数据导出为excel。

1、Hutool工具介绍

Hutool是一个小而全的Java工具类库,它通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅。Hutool涵盖了Java开发底层代码中的各个方面,是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。

2、项目环境搭建

开发工具 IntelliJ IDEA
框架 Spring + Spreing MVC + MyBatis
数据库 MySQL 5.6
前端 Bootstrap 

3、Hutool的使用

Hutool的使用步骤主要分为以下几个步骤:

(1)在pom.xml中引入依赖包。

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.0.7</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.1</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml-schemas</artifactId>
    <version>3.17</version>
</dependency>

(2)在控制层使用Hutool。

 @RequestMapping("/export")
    public void export(HttpServletResponse response) throws UnsupportedEncodingException {
        //从数据库中查询到数据
        List<User> userList = exportService.findAll();
        // 通过工具类创建writer,默认创建xls格式
        ExcelWriter writer = ExcelUtil.getWriter();
        //自定义标题别名
        writer.addHeaderAlias("id", "序号");
        writer.addHeaderAlias("username", "姓名");
        writer.addHeaderAlias("address", "地址");
        writer.addHeaderAlias("age", "年龄");
        // 合并单元格后的标题行,使用默认标题样式
        writer.merge(3, "人员信息");
        // 一次性写出内容,使用默认样式,强制输出标题
        writer.write(userList, true);
        //out为OutputStream,需要写出到的目标流
        //response为HttpServletResponse对象
        response.setContentType("application/vnd.ms-excel;charset=utf-8");
        //dateString.xls是弹出下载对话框的文件名,用日期作为文件名称
        Date currentTime = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString = formatter.format(currentTime);
        response.setHeader("Content-Disposition","attachment;filename="+dateString+".xls");
        ServletOutputStream out= null;
        try {
            out = response.getOutputStream();
            writer.flush(out, true);
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            // 关闭writer,释放内存
            writer.close();
        }
        //此处记得关闭输出Servlet流
        IoUtil.close(out);
    }

4、效果演示

(1)启动项目,点击按钮,跳转到用户信息页面。

 (2)点击导出,下载文件。

 文件内容如下:

5、项目源码

 https://github.com/MyBestThought/ExportExcel

猜你喜欢

转载自blog.csdn.net/weixin_47382783/article/details/118873407