Easypoi开箱&实战

简介: 一直都想用Easypoi实现导出/导入Excel和Word文件,可是项目里一直没有用上,很多时候都是自己写方法去实现,所以今天跟大家一起来看看这个号称很Easy又好用的开源框架EasyPoi到底是不是真的很easy上手。

微信截图_20220531150923.png


前言


一直都想用Easypoi实现导出/导入Excel和Word文件,可是项目里一直没有用上,很多时候都是自己写方法去实现,所以今天跟大家一起来看看这个号称很Easy又好用的开源框架EasyPoi到底是不是真的很easy上手。


首先,思考一个问题,在没有开源框架的辅助下我们是如何完成Excel表格数据的生成以及导出的?


我们得绘制表格,然后依次创建sheet、row、cell,然后通过与数据库的字段映射,填充数据,最后将生成的Excel文件以流或者文件的方式提供出去,这种方法的缺点显而易见,每增加或者减少字段我们都得从service层改到mapper层,下图是生成手动自定义生成Excel文件的部分代码。

微信截图_20220531173151.png

微信截图_20220531173244.png

上面的代码杂又乱,虽然说可以很灵活的使用,但是还是有一定的局限性,那有没有更加简单实现方案呢?当然有,EasyPoi就能,那接下来我们看看Easypoi是如何实现Excel数据的导出的。


我们先来认识一下关于 @Excel 里的一些注解,我们可以看到,注解里有针对数字,时间以及列或行合并的,使用起来很方便微信截图_20220531173313.png

EasyPoi具体实现:

一.引用easypoi的依赖,现在的easypoi已经有支持spring boot的starter了

<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-spring-boot-starter</artifactId>
    <version>4.1.2</version>
</dependency>
复制代码

二.注解及映射实体

/**
 * @ExcelTarget即数据对应的表
 */
@Data
@ExcelTarget("user")
public class User {
    @Excel(name="编号")
    private String id;
    @Excel(name="姓名")
    private String user_name;
    //可以直接对数据库的字段进行时间格式化
    @Excel(name="生日",format = "yyyy-MM-dd",width = 15.0)
    private Date birthday;
    @Excel(name="联系地址",width=20.0)
    private String address;
}
复制代码

三.调用其封装的方法,进行Excel生成,包括标题,sheet以及数据填充导出

@RequestMapping("/export")
    public void exportExcel(HttpServletResponse response) throws IOException {
        List<User> userList = userService.findAll();
        Workbook workbook = null;
        ServletOutputStream outputStream = null;
        //生成excel
        //对应三 执行结果里的标题,sheet名称
        try {
            workbook = ExcelExportUtil.exportExcel(new ExportParams("测试标题", "测试用户信息"), User.class, userList);
            //浏览器下载及乱码处理
            response.setHeader("content-disposition", "attachment;fileName=" + URLEncoder.encode("用户信息列表.xls", "UTF-8"));
            outputStream = response.getOutputStream();
            workbook.write(outputStream);
        } catch (Exception e) {
            throw new IOException(e);
        } finally {
            outputStream.close();
            workbook.close();
        }
    }
}
复制代码

四.执行结果

微信截图_20220531173403.png

五.注意事项

目前Easypoi在大数据导入导出方面有点缺陷,数据量过多,容易OOM,问题出在文件流部分,如果数据量过大的话可以将这部分改为多线程或异步执行。


小结


从上面可以看到,想要导出一个Excel使用Easypoi只需要两步,而且EasyPoi里还提供了很多对数据处理的注解,真的是处理起来方便又简洁,Easypoi是真的easy,项目里有导入导出功能的话就用Easypoi试试吧。

目录
相关文章
|
4月前
|
Java 对象存储 数据安全/隐私保护
这才是企业级的 oss-spring-boot-starter,开箱即用!
【8月更文挑战第28天】在快节奏的软件开发时代,高效与便捷成为了企业项目成功的关键要素之一。对于依赖对象存储服务(OSS, Object Storage Service)的应用而言,如何快速、安全地集成OSS功能,是许多开发者面临的挑战。今天,我们将深入探讨一款专为Spring Boot设计的企业级oss-spring-boot-starter,它以其开箱即用的特性,极大地简化了OSS的集成过程,让开发者能够更专注于业务逻辑的实现。
148 1
|
5月前
|
JSON 缓存 Java
Spring Boot集成 Swagger2 展现在线接口文档
本节课详细分析了 Swagger 的优点,以及 Spring Boot 如何集成 Swagger2,包括配置,相关注解的讲解,涉及到了实体类和接口类,以及如何使用。最后通过页面测试,体验了 Swagger 的强大之处,基本上是每个项目组中必备的工具之一,所以要掌握该工具的使用,也不难。
|
5月前
|
开发框架 Java 数据库
Spring Boot集成多数据源的最佳实践
Spring Boot集成多数据源的最佳实践
|
6月前
|
Java API Spring
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
545 1
|
7月前
|
Java 数据库 数据安全/隐私保护
基于Spring Boot的在线考试系统
基于Spring Boot的在线考试系统
|
7月前
|
Prometheus 监控 Cloud Native
Spring Boot 应用可视化监控
Spring Boot 应用可视化监控
63 0
实战分享之springboot+easypoi快速业务集成2
实战分享之springboot+easypoi快速业务集成2
实战分享之springboot+easypoi快速业务集成1
实战分享之springboot+easypoi快速业务集成1
|
7月前
|
Oracle Java 关系型数据库
mybatis快速自动生成代码【采用工具,开箱即用】
mybatis快速自动生成代码【采用工具,开箱即用】
|
Java
JavaWeb-Springboot集成JPA开箱即用
Springboot集成JPA完成企业级应用,通用JPA底层能力
120 0
JavaWeb-Springboot集成JPA开箱即用