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 操作。

这种方式在实际开发中非常实用,能够大幅度提高工作效率,相信读者也能在项目中尝试实现这些功能。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部