Spring Boot整合 EasyExcel 实现复杂 Excel 表格的导入与导出功能

文章目录

    • [1. 简介](#1. 简介)
    • [2. 引入依赖](#2. 引入依赖)
    • [3. 导入功能实现](#3. 导入功能实现)
      • [3.1 创建实体类](#3.1 创建实体类)
      • [3.2 编写导入 Controller](#3.2 编写导入 Controller)
      • [3.3 编写导入页面](#3.3 编写导入页面)
    • [4. 导出功能实现](#4. 导出功能实现)
      • [4.1 编写导出 Controller](#4.1 编写导出 Controller)
      • [4.2 编写导出页面](#4.2 编写导出页面)
    • [5. 启动应用](#5. 启动应用)

🎈个人主页:程序员 小侯

🎐CSDN新晋作者

🎉欢迎 👍点赞✍评论⭐收藏

✨收录专栏:Java框架

✨文章内容:整合 EasyExcel

🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗

1. 简介

EasyExcel 是阿里巴巴开源的一款基于 Java 的简单、快速、强大的 Excel 处理工具。在实际应用中,Excel 的导入与导出是常见的需求,而 EasyExcel 提供了简便的 API,使得这些操作变得非常容易。本文将介绍如何在 Spring Boot 项目中整合 EasyExcel,实现复杂 Excel 表格的导入与导出功能。

2. 引入依赖

pom.xml 文件中引入 EasyExcel 的依赖:

xml 复制代码
<dependencies>
    <!-- EasyExcel -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>2.4.3</version>
    </dependency>
    
    <!-- Spring Boot Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

3. 导入功能实现

3.1 创建实体类

创建与 Excel 表格对应的实体类,注解 @ExcelProperty 用于指定属性与 Excel 列的映射关系:

java 复制代码
public class User {

    @ExcelProperty("ID")
    private Long id;

    @ExcelProperty("姓名")
    private String name;

    @ExcelProperty("年龄")
    private Integer age;

    // 省略 getter 和 setter
}

3.2 编写导入 Controller

创建导入功能的 Controller 类,使用 @PostMapping 注解处理导入请求:

java 复制代码
@RestController
@RequestMapping("/excel")
public class ExcelController {

    @PostMapping("/import")
    public String importExcel(@RequestParam("file") MultipartFile file) {
        try (InputStream inputStream = file.getInputStream()) {
            List<User> userList = EasyExcel.read(inputStream).head(User.class).sheet().doReadSync();
            // 处理导入的数据,例如保存到数据库
            return "导入成功";
        } catch (Exception e) {
            e.printStackTrace();
            return "导入失败";
        }
    }
}

3.3 编写导入页面

创建导入页面,使用 HTML 表单上传 Excel 文件:

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Excel导入</title>
</head>
<body>
    <form action="/excel/import" method="post" enctype="multipart/form-data">
        <input type="file" name="file" accept=".xls,.xlsx">
        <button type="submit">导入</button>
    </form>
</body>
</html>

4. 导出功能实现

4.1 编写导出 Controller

创建导出功能的 Controller 类,使用 @GetMapping 注解处理导出请求:

java 复制代码
@RestController
@RequestMapping("/excel")
public class ExcelController {

    // 导出数据的模拟数据
    private List<User> mockData() {
        List<User> userList = new ArrayList<>();
        userList.add(new User(1L, "Alice", 25));
        userList.add(new User(2L, "Bob", 30));
        userList.add(new User(3L, "Charlie", 22));
        return userList;
    }

    @GetMapping("/export")
    public void exportExcel(HttpServletResponse response) {
        try (OutputStream outputStream = response.getOutputStream()) {
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("utf-8");
            response.setHeader("Content-disposition", "attachment;filename=user.xlsx");

            EasyExcel.write(outputStream, User.class).sheet("用户信息").doWrite(mockData());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4.2 编写导出页面

创建导出页面,通过超链接触发导出操作:

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Excel导出</title>
</head>
<body>
    <a href="/excel/export">导出Excel</a>
</body>
</html>

5. 启动应用

启动 Spring Boot 应用,访问导入页面和导出页面,即可进行 Excel 表格的导入与导出操作。

通过以上步骤,我们成功地整合了 Spring Boot 与 EasyExcel,实现了复杂 Excel 表格的导入与导出功能。EasyExcel 提供了丰富的配置选项和灵活的 API,使得 Excel 处理变得非常简单。在实际项目中,可以根据业务需求进行更加复杂的配置和处理,满足不同场景的导入导出要求。

后记 👉👉💕💕美好的一天,到此结束,下次继续努力!欲知后续,请看下回分解,写作不易,感谢大家的支持!! 🌹🌹🌹

相关推荐
__zRainy__1 小时前
Node系列 · ORM:Sequelize 模型
数据库·后端·node.js
reasonsummer1 小时前
【办公类110-08】20260807园园通-“小班“户籍地址和居住地址补充完整+外省市所在“省市区”两个按钮手工填写(Python+EXCEL)
python·excel·园园通
摇滚侠1 小时前
《SpringBoot 3:入门与应用实战》第 6 章 Spring Boot 最佳实践 阅读笔记 11
spring boot·笔记·后端
对象存储与RustFS1 小时前
用 rclone 把现有 S3/MinIO 数据同步到 RustFS
后端·rust·开源
魔兽大山哥2 小时前
【NL2SQL 实战 05】sqlglot 这把刀:把 SQL 当结构处理,安全校验才不靠碰运气
后端
有来技术2 小时前
youlai-boot 实战:MinIO 停止维护,Docker 迁移 RustFS 完整记录
java·后端·docker
Lyy2 小时前
DevOps平台 — 第七篇:我的项目与表格组件抽取
后端·devops
唐青枫2 小时前
别只会写 fn:Zig 函数、错误处理、泛型与回调实战
后端
Rain的Java大神之路2 小时前
Docker搭建Redis集群完全指南
java·运维·redis·后端·docker·容器·架构
jj_ccwgw2 小时前
Kafka KRaft 多机集群安装指南
后端