SpringBoot中利用EasyExcel+aop实现一个通用Excel导出功能

一、结果展示

主要功能:可以根据前端传递的参数,导出指定列、指定行

1.1 案例一

  1. 前端页面
  2. 传递参数
json 复制代码
{
    "excelName": "导出用户信息1725738666946",
    "sheetName": "导出用户信息",
    "fieldList": [
        {
            "fieldName": "userId",
            "fieldDesc": "用户id"
        },
        {
            "fieldName": "age",
            "fieldDesc": "年龄"
        },
        {
            "fieldName": "address",
            "fieldDesc": "地址"
        }
    ]
}
  1. 导出的文件

1.2 案例二

  1. 前端页面

  2. 传递参数

json 复制代码
{
    "excelName": "导出用户信息1725739080367",
    "sheetName": "导出用户信息",
    "fieldList": [
        {
            "fieldName": "userId",
            "fieldDesc": "用户id"
        },
        {
            "fieldName": "address",
            "fieldDesc": "地址"
        },
        {
            "fieldName": "age",
            "fieldDesc": "年龄"
        },
        {
            "fieldName": "userName",
            "fieldDesc": "用户名"
        }
    ],
    "userIdList": [
        "1",
        "3",
        "5",
        "8",
        "9"
    ]
}
  1. 导出结果

二、代码实现

工具类代码结构

2.1 入参、出参

UserExportRequest

java 复制代码
public class UserExportRequest extends ExcelExportRequest {
    /**
     * 要导出的用户id列表,不传,则导出所有用户记录
     */
    private List<Integer> userIdList;

    public List<Integer> getUserIdList() {...}
    public void setUserIdList(List<Integer> userIdList) {...}
}

---继承自通用的ExcelExportRequest类---
public class ExcelExportRequest {
    /**
     * excel名称
     */
    private String excelName;

    /**
     * sheet的名称
     */
    private String sheetName;

    /**
     * 导出字段有序列表
     */
    private List<ExcelExportField> fieldList;

    public String getSheetName() {...}
    public void setSheetName(String sheetName) {...}
    public String getExcelName() {...}
    public void setExcelName(String excelName) {...}
    public List<ExcelExportField> getFieldList() {...}
    public void setFieldList(List<ExcelExportField> fieldList) {...}
}

ExcelExportResponse

java 复制代码
public class ExcelExportResponse {
    //导出的excel文件名称
    private String excelName;
    // sheet列表数据
    private List<ExcelSheet> sheetList;

    public String getExcelName() {...}
    public void setExcelName(String excelName) {...}
    public List<ExcelSheet> getSheetList() {...}
    public void setSheetList(List<ExcelSheet> sheetList) {...}
}

2.2 生成ExcelExportResponse的逻辑

2.3 aop通知

2.4 下载Excel

相关推荐
程序员黑豆7 小时前
AI全栈开发之Java:什么是JDK
前端·后端·ai编程
阿明在折腾7 小时前
从Canvas到AI模型:我在线工具站里的图片处理实战
前端·后端
杨运交7 小时前
[030][Web模块]Spring Boot 验证与 OpenAPI 集成实战:从校验规则到文档生成
前端·spring boot·python
tyung7 小时前
Go 手写 Wait-Free SPSC 无界队列:无 CAS、无锁、泛型节点池
数据结构·后端·go
Lucien3237 小时前
学完 Spring Boot 再看 FastAPI,我破防了
后端
小小龙学IT8 小时前
Go 语言后端开发:从并发模型到生产落地的工程实践
开发语言·后端·golang
程序员cxuan8 小时前
Agents.md 是什么
人工智能·后端·程序员
再写一行代码就下班8 小时前
Cursor配置Java环境、创建Spring Boot项目的步骤
java·开发语言·spring boot
摇滚侠8 小时前
Java 零基础全套教程,类的加载过程与类加载器的理解,笔记 189
java·后端·intellij-idea
ServBay8 小时前
为什么我劝你不要在Mac上用Docker 进行本地 AI 开发
后端