还在为SpringBoot3整合EasyExcel发愁?一文搞定!

程序员科技 2025-04-08 22:22:44

你是否在开发互联网大厂后端项目时,遇到过需要处理 Excel 文件的场景呢?比如从 Excel 中读取大量业务数据导入系统,或者将系统中的关键数据导出成 Excel 文件供他人查看。对于咱们互联网大厂后端开发人员而言,这是常见需求,而在 Spring Boot3 项目里,怎样高效整合 Easy Excel 来实现 Excel 文件的读取和写入处理,可是个关键技能点。

背景介绍

在如今的互联网项目开发中,数据的交互和处理愈发频繁。Excel 文件由于其便捷性和通用性,成为了数据传输和存储的常用格式之一。Spring Boot 作为当下热门的 Java 开发框架,提供了一系列简化开发的功能和工具。Easy Excel 则是一款优秀的 Java 处理 Excel 文件的工具库,它具有内存优化、简单易用、性能卓越等特点,能很好地满足我们在处理 Excel 文件时的各种需求。在 Spring Boot3 项目中整合 Easy Excel,能够让我们更高效地完成 Excel 文件的读取和写入操作,提升项目开发效率。

具体实现

添加依赖

首先,我们要在 Spring Boot3 项目的 pom.xml 文件中添加 Easy Excel 的依赖。在<dependencies>标签内,添加如下代码:

<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.2.2</version></dependency>

这样,我们就引入了 Easy Excel 库,为后续操作打下基础。

读取 Excel 文件

创建数据实体类

假设我们要读取的 Excel 文件内容是用户信息,包含姓名、年龄、邮箱等字段。我们先创建一个对应的 Java 实体类,比如User.java:

public User { private String name; private Integer age; private String email; // 省略getter和setter方法}

创建监听器

Easy Excel 通过监听器来处理读取到的数据。我们创建一个自定义监听器,继承AnalysisEventListener类。例如:

import com.alibaba.excel.context.AnalysisContext;import com.alibaba.excel.event.AnalysisEventListener;import java.util.ArrayList;import java.util.List;public UserDataListener extends AnalysisEventListener<User> { private static final int BATCH_COUNT = 100; private List<User> userList = new ArrayList<>(); @Override public void invoke(User user, AnalysisContext analysisContext) { userList.add(user); if (userList.size() >= BATCH_COUNT) { saveData(); userList.clear(); } } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { saveData(); } private void saveData() { // 这里可以将userList中的数据批量保存到数据库或进行其他处理 System.out.println("存储数据:" + userList.size()); }}

执行读取操作

在 Spring Boot 的服务类中,编写读取 Excel 文件的方法:

import com.alibaba.excel.EasyExcel;import org.springframework.stereotype.Service;import org.springframework.web.multipart.MultipartFile;import java.io.IOException;@Servicepublic ExcelService { public void readExcel(MultipartFile file) { try { EasyExcel.read(file.getInputStream(), User.class, new UserDataListener()).sheet().doRead(); } catch (IOException e) { e.printStackTrace(); } }}写入 Excel 文件

准备数据

假设我们要将系统中的用户数据导出为 Excel 文件,先从数据库或其他数据源获取数据,得到一个List<User>集合。

创建 ExcelWriter

在服务类中编写写入 Excel 文件的方法:

import com.alibaba.excel.EasyExcel;import com.alibaba.excel.write.builder.ExcelWriterBuilder;import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder;import com.alibaba.excel.write.metadata.WriteSheet;import org.springframework.stereotype.Service;import org.springframework.web.servlet.view.AbstractView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.OutputStream;import java.net.URLEncoder;import java.util.List;@Servicepublic ExcelService { public void writeExcel(List<User> userList, HttpServletResponse response) { try { response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); String fileName = URLEncoder.encode("用户信息", "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); OutputStream outputStream = response.getOutputStream(); ExcelWriterBuilder excelWriterBuilder = EasyExcel.write(outputStream, User.class); WriteSheet writeSheet = EasyExcel.writerSheet("用户信息").build(); excelWriterBuilder.sheet(writeSheet).doWrite(userList); } catch (IOException e) { e.printStackTrace(); } }}总结

通过以上步骤,我们成功在 Spring Boot3 项目中实现了与 Easy Excel 的整合,完成了 Excel 文件的读取和写入处理。在实际开发中,大家可以根据具体业务需求,灵活调整和优化代码。如果你在实践过程中有任何问题,或者有更好的实现思路,欢迎在评论区留言分享。让我们一起不断提升后端开发技能,打造更高效、更优质的互联网项目!

0 阅读:0

程序员科技

简介:感谢大家的关注