Spring Boot 整合 EasyExcel 实现数据导入导出
在现代应用程序中,数据的导入和导出是一个常见的需求。为了简化这个过程,我们可以使用 Spring Boot 框架结合阿里巴巴的 EasyExcel 库来实现高效的数据导入和导出功能。EasyExcel 是一个轻量级的 Excel 处理工具,具有性能优越、简单易用的特点。
一、项目依赖
首先,我们需要在 pom.xml
文件中添加必要的依赖。除了 Spring Boot 的基本依赖外,我们还需要引入 EasyExcel 的依赖。
<dependencies>
<!-- Spring Boot Starter Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- EasyExcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.0</version>
</dependency>
<!-- 其他依赖 -->
</dependencies>
二、实体类
我们需要定义一个实体类,用于映射 Excel 中的数据。例如,我们定义一个 User
类,表示用户信息。
import com.alibaba.excel.annotation.ExcelProperty;
public class User {
@ExcelProperty("用户名")
private String username;
@ExcelProperty("年龄")
private Integer age;
@ExcelProperty("邮箱")
private String email;
// 构造方法、getter和setter省略
}
三、数据导出
接下来,我们将实现一个简单的导出接口。这个接口会读取一些用户数据,并将其导出为 Excel 文件。
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.util.List;
@RestController
public class UserController {
@GetMapping("/export")
public void export(HttpServletResponse response) {
// 设置响应头
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=users.xlsx");
// 创建用户数据
List<User> users = List.of(
new User("张三", 25, "zhangsan@example.com"),
new User("李四", 30, "lisi@example.com"),
new User("王五", 28, "wangwu@example.com")
);
// 使用 EasyExcel 导出数据
EasyExcel.write(response.getOutputStream(), User.class)
.sheet("用户列表")
.doWrite(users);
}
}
四、数据导入
现在,让我们实现一个简单的导入接口。该接口将接收上传的 Excel 文件,并读取其中的用户数据。
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.event.EventRegistry;
import com.alibaba.excel.read.listener.ReadListener;
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;
@RestController
public class UserController {
// 省略导出方法...
@PostMapping("/import")
public String importData(@RequestParam("file") MultipartFile file) {
try {
EasyExcel.read(file.getInputStream(), User.class, new ReadListener<User>() {
@Override
public void invoke(User user, AnalysisContext context) {
// 这里可以将用户信息保存到数据库等操作
System.out.println(user);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 读取完成后的操作
}
}).sheet().doRead();
return "导入成功";
} catch (Exception e) {
return "导入失败: " + e.getMessage();
}
}
}
五、总结
通过以上代码示例,我们实现了一个简单的用户信息的数据导入和导出功能。利用 Spring Boot 和 EasyExcel 的强大组合,我们可以高效处理 Excel 数据。同时,EasyExcel 提供了简洁的 API 使得开发者可以更专注于业务逻辑而非复杂的 Excel 操作。
这种方式在实际开发中非常实用,能够大幅度提高工作效率,相信读者也能在项目中尝试实现这些功能。