SpringBoot集成EasyExcel 3.x:高效实现Excel数据的优雅导入与导出

简介: SpringBoot集成EasyExcel 3.x:高效实现Excel数据的优雅导入与导出

SpringBoot集成EasyExcel 3.x:高效实现Excel数据的优雅导入与导出

 

在现代企业应用中,Excel作为数据交换的重要工具,几乎无处不在。如何高效且优雅地实现Excel数据的导入与导出,是每个开发者都需要面对的问题。EasyExcel是阿里巴巴开源的一个高性能Excel处理库,它可以大大简化Excel操作。在本文中,我们将介绍如何在SpringBoot项目中集成EasyExcel 3.x,并实现Excel数据的导入与导出。

 

一、项目依赖

 

首先,在SpringBoot项目中引入EasyExcel相关依赖。

 

```xml
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.x.x</version>
</dependency>
```

 

二、实体类定义

 

我们以一个简单的用户信息表为例,定义一个User实体类。

 

```java
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
 
@ColumnWidth(20)
public class User {
 
    @ExcelProperty("用户ID")
    private Long id;
 
    @ExcelProperty("用户名")
    private String name;
 
    @ExcelProperty("年龄")
    private Integer age;
 
    // Getters and setters
}
```

 

三、实现Excel导出

 

导出Excel的核心在于使用EasyExcel提供的`EasyExcel.write()`方法。

 

3.1 Controller层

 

```java
import com.alibaba.excel.EasyExcel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
 
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
 
@RestController
public class ExcelExportController {
 
    @GetMapping("/export")
    public void export(HttpServletResponse response) throws IOException {
        // 设置响应头
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        String fileName = URLEncoder.encode("用户信息", "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
 
        // 模拟数据
        List<User> userList = new ArrayList<>();
        userList.add(new User(1L, "张三", 25));
        userList.add(new User(2L, "李四", 30));
 
        // 写入Excel
        EasyExcel.write(response.getOutputStream(), User.class).sheet("用户信息").doWrite(userList);
    }
}
```

 

四、实现Excel导入

 

导入Excel的核心在于使用EasyExcel提供的`EasyExcel.read()`方法。

 

4.1 自定义读监听器

 

```java
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
 
import java.util.ArrayList;
import java.util.List;
 
public class UserExcelListener extends AnalysisEventListener<User> {
 
    private List<User> userList = new ArrayList<>();
 
    @Override
    public void invoke(User user, AnalysisContext analysisContext) {
        userList.add(user);
    }
 
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        // 可以在这里进行数据处理,例如保存到数据库
        System.out.println("所有数据解析完成!");
    }
 
    public List<User> getUserList() {
        return userList;
    }
}
```

 

4.2 Controller层

 

```java
import com.alibaba.excel.EasyExcel;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
 
import java.io.IOException;
 
@RestController
public class ExcelImportController {
 
    @PostMapping("/import")
    public String importExcel(@RequestParam("file") MultipartFile file) throws IOException {
        UserExcelListener listener = new UserExcelListener();
        EasyExcel.read(file.getInputStream(), User.class, listener).sheet().doRead();
        List<User> userList = listener.getUserList();
        
        // 这里可以将数据保存到数据库
        userList.forEach(System.out::println);
 
        return "导入成功!";
    }
}
```

 

五、完整的SpringBoot配置

 

5.1 启动类

 

```java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@SpringBootApplication
public class EasyExcelApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(EasyExcelApplication.class, args);
    }
}
```

 

5.2 配置文件

 

在`application.properties`中添加必要的配置:

 

```properties
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=5MB
spring.servlet.multipart.max-request-size=5MB
```

 

六、测试导入与导出功能

 

启动SpringBoot应用后,访问以下接口进行测试:

 

- 导出:`http://localhost:8080/export`

- 导入:通过Postman等工具,发送POST请求到`http://localhost:8080/import`,并上传一个包含用户信息的Excel文件。

 

结论

 

通过SpringBoot集成EasyExcel,可以高效地实现Excel数据的导入与导出。EasyExcel提供了简洁的API和优异的性能,适用于各种规模的应用场景。

目录
相关文章
|
3月前
|
SQL 人工智能 JSON
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
简介:本文整理自阿里云高级技术专家李麟在Flink Forward Asia 2025新加坡站的分享,介绍了Flink 2.1 SQL在实时数据处理与AI融合方面的关键进展,包括AI函数集成、Join优化及未来发展方向,助力构建高效实时AI管道。
780 43
|
3月前
|
SQL 人工智能 JSON
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
本文整理自阿里云的高级技术专家、Apache Flink PMC 成员李麟老师在 Flink Forward Asia 2025 新加坡[1]站 —— 实时 AI 专场中的分享。将带来关于 Flink 2.1 版本中 SQL 在实时数据处理和 AI 方面进展的话题。
278 0
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
|
3月前
|
SQL 关系型数据库 Apache
从 Flink 到 Doris 的实时数据写入实践 —— 基于 Flink CDC 构建更实时高效的数据集成链路
本文将深入解析 Flink-Doris-Connector 三大典型场景中的设计与实现,并结合 Flink CDC 详细介绍了整库同步的解决方案,助力构建更加高效、稳定的实时数据处理体系。
1715 0
从 Flink 到 Doris 的实时数据写入实践 —— 基于 Flink CDC 构建更实时高效的数据集成链路
|
3月前
|
机器学习/深度学习 SQL 大数据
什么是数据集成?和数据融合有什么区别?
在大数据领域,“数据集成”与“数据融合”常被混淆。数据集成关注数据的物理集中,解决“数据从哪来”的问题;数据融合则侧重逻辑协同,解决“数据怎么用”的问题。两者相辅相成,集成是基础,融合是价值提升的关键。理解其差异,有助于企业释放数据潜力,避免“数据堆积”或“盲目融合”的误区,实现数据从成本到生产力的转变。
什么是数据集成?和数据融合有什么区别?
|
5月前
|
运维 安全 数据管理
Dataphin V5.1 企业级发布:全球数据无缝集成,指标管理全新升级!
企业数据管理难题?Dataphin 5.1版来解决!聚焦跨云数据、研发效率、指标管理和平台运维四大场景,助力数据团队轻松应对挑战。无论是统一指标标准、快速定位问题,还是提升管理安全性,Dataphin都能提供强大支持。3分钟了解新版本亮点,让数据治理更高效!
104 0
|
9月前
|
Java 关系型数据库 MySQL
SpringBoot 通过集成 Flink CDC 来实时追踪 MySql 数据变动
通过详细的步骤和示例代码,您可以在 SpringBoot 项目中成功集成 Flink CDC,并实时追踪 MySQL 数据库的变动。
2341 45
|
10月前
|
机器学习/深度学习 PyTorch 测试技术
LossVal:一种集成于损失函数的高效数据价值评估方法
LossVal是一种创新的机器学习方法,通过在损失函数中引入实例级权重,直接在训练过程中评估数据点的重要性,避免了传统方法中反复重训练模型的高计算成本。该方法适用于回归和分类任务,利用最优传输距离优化权重,确保模型更多地从高质量数据中学习。实验表明,LossVal在噪声样本检测和高价值数据点移除等任务上表现优异,具有更低的时间复杂度和更稳定的性能。论文及代码已开源,为数据价值评估提供了高效的新途径。
234 13
LossVal:一种集成于损失函数的高效数据价值评估方法
|
9月前
|
存储 人工智能 NoSQL
Airweave:快速集成应用数据打造AI知识库的开源平台,支持多源整合和自动同步数据
Airweave 是一个开源工具,能够将应用程序的数据同步到图数据库和向量数据库中,实现智能代理检索。它支持无代码集成、多租户支持和自动同步等功能。
596 14
|
8月前
|
缓存 Java 应用服务中间件
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——依赖导入和Thymeleaf相关配置
在Spring Boot中使用Thymeleaf模板,需引入依赖`spring-boot-starter-thymeleaf`,并在HTML页面标签中声明`xmlns:th=&quot;http://www.thymeleaf.org&quot;`。此外,Thymeleaf默认开启页面缓存,开发时建议关闭缓存以实时查看更新效果,配置方式为`spring.thymeleaf.cache: false`。这可避免因缓存导致页面未及时刷新的问题。
361 0
下一篇
oss云网关配置