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

目录
相关文章
|
6天前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
2月前
|
关系型数据库 MySQL Shell
不通过navicat工具怎么把查询数据导出到excel表中
不通过navicat工具怎么把查询数据导出到excel表中
32 0
|
6天前
|
SQL C# 数据库
EPPlus库的安装和使用 C# 中 Excel的导入和导出
本文介绍了如何使用EPPlus库在C#中实现Excel的导入和导出功能。首先,通过NuGet包管理器安装EPPlus库,然后提供了将DataGridView数据导出到Excel的步骤和代码示例,包括将DataGridView转换为DataTable和使用EPPlus将DataTable导出为Excel文件。接着,介绍了如何将Excel数据导入到数据库中,包括读取Excel文件、解析数据、执行SQL插入操作。
EPPlus库的安装和使用 C# 中 Excel的导入和导出
|
15天前
|
存储 Java
java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
34 2
|
24天前
|
数据采集 存储 数据挖掘
使用Python读取Excel数据
本文介绍了如何使用Python的`pandas`库读取和操作Excel文件。首先,需要安装`pandas`和`openpyxl`库。接着,通过`read_excel`函数读取Excel数据,并展示了读取特定工作表、查看数据以及计算平均值等操作。此外,还介绍了选择特定列、筛选数据和数据清洗等常用操作。`pandas`是一个强大且易用的工具,适用于日常数据处理工作。
|
2月前
|
SQL JSON 关系型数据库
n种方式教你用python读写excel等数据文件
n种方式教你用python读写excel等数据文件
|
2月前
|
存储 Java Apache
|
3月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
190 6
|
3月前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
217 4
|
3月前
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
172 1
下一篇
无影云桌面