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和优异的性能,适用于各种规模的应用场景。

目录
相关文章
|
22天前
|
前端开发 easyexcel Java
springboot使用EasyExcel导入数据(获取行号)
springboot使用EasyExcel导入数据(获取行号)
23 1
|
22天前
|
Java easyexcel
java开发excel导入导出工具类基于EasyExcel
java开发excel导入导出工具类基于EasyExcel
51 1
|
2天前
|
传感器 Python
门禁管理系统工程是一个涉及硬件和软件集成的复杂系统,旨在控制人员的出入,并记录和管理相关数据。
门禁管理系统工程是一个涉及硬件和软件集成的复杂系统,旨在控制人员的出入,并记录和管理相关数据。
8 0
|
4天前
|
机器学习/深度学习 PyTorch TensorFlow
在深度学习中,数据增强是一种常用的技术,用于通过增加训练数据的多样性来提高模型的泛化能力。`albumentations`是一个强大的Python库,用于图像增强,支持多种图像变换操作,并且可以与深度学习框架(如PyTorch、TensorFlow等)无缝集成。
在深度学习中,数据增强是一种常用的技术,用于通过增加训练数据的多样性来提高模型的泛化能力。`albumentations`是一个强大的Python库,用于图像增强,支持多种图像变换操作,并且可以与深度学习框架(如PyTorch、TensorFlow等)无缝集成。
9 0
|
15天前
|
JSON JavaScript 数据格式
vue 电子表格Excel的上传导入、导出下载、读取本地Excel、json转Excel
vue 电子表格Excel的上传导入、导出下载、读取本地Excel、json转Excel
20 0
|
17天前
|
分布式计算 DataWorks Oracle
DataWorks产品使用合集之从集成那批量建作业同步数据的,如何批量修改
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
14 0
|
19天前
|
SQL 数据采集 DataWorks
DataWorks操作报错合集之数据集成里面的数据调度独享资源组测试通过了,但是数据地图里无法通过,该如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
21天前
|
前端开发 Java 开发工具
如何在Spring Boot框架下实现高效的Excel服务端导入导出?
ArtifactId:是项目的唯一标识符,在实际开发中一般对应项目的名称,就是项目根目录的名称。 Group Id,Artfact Id是保证项目唯一性的标识,一般来说如果项目打包上传至maven这样的包管理仓库中。在搜索你的项目时,Group Id,Artfact Id是必要的条件。 Version:版本号,默认0.0.1-SNAPSHOT。SNAPSHOT代表不稳定的版本,与之相对的有RELEASE。 Project type:工程的类型,maven工程还是gradle工程。 Language:语言(Java,Kotlin,Groovy)。
|
21天前
|
easyexcel Java API
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
|
22天前
如何使用Navicat导出Excel
如何使用Navicat导出Excel
12 0