当前位置: 首页 > news >正文

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

一、结果展示

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

1.1 案例一

  1. 前端页面
    在这里插入图片描述
  2. 传递参数
{"excelName": "导出用户信息1725738666946","sheetName": "导出用户信息","fieldList": [{"fieldName": "userId","fieldDesc": "用户id"},{"fieldName": "age","fieldDesc": "年龄"},{"fieldName": "address","fieldDesc": "地址"}]
}
  1. 导出的文件
    在这里插入图片描述

1.2 案例二

  1. 前端页面
    在这里插入图片描述

  2. 传递参数

{"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

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

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

在这里插入图片描述

http://www.lryc.cn/news/433315.html

相关文章:

  • 排序链表(归并排序)
  • Adobe After Effects的插件--------CC Particle World
  • 电脑硬盘数据丢失了怎么恢复?简单实用的硬盘数据找回的方法
  • k8s调度(pod亲和、反亲和、污点、容忍度)
  • 智能制造核心领域:自动化、物联网、大数据分析、人工智能在现代制造业中的应用与融合
  • Android Studio 2024最新版Hello World
  • 请解释Java中的CountDownLatch和CyclicBarrier的区别和使用场景。什么是Java中的Semaphore?它如何控制并发访问?
  • Django+Vue3前后端分离学习(五)(前端登录页面搭建)
  • 虚拟机安装macos系统
  • AI基础 L9 Local Search II 局部搜索
  • 828华为云征文|使用sysbench对Mysql应用加速测评
  • 2024 年高教社杯全国大学生数学建模竞赛题目——D 题 反潜航空深弹命中概率问题的求解
  • 【Kubernetes】常见面试题汇总(一)
  • 简单实用的php全新实物商城系统
  • Leetcode面试经典150题-128.最长连续序列-递归版本另解
  • spring security 中的授权使用
  • python安装以及访问openAI API
  • 【Unity小技巧】URP管线遮挡高亮效果
  • C#中的GDI和GDI+(Graphics Device Interface Plus)图形设备接口
  • 谷粒商城のNginx
  • Debug-027-el-tooltip组件的使用及注意事项
  • 猫眼电影字体破解(图片转码方法)
  • flink wordcount
  • 组合模式(Composite Pattern)
  • 教你制作一本加密的样本册
  • C语言进阶【1】--字符函数和字符串函数【1】
  • git提交自动带上 Signed-off-by信息
  • 图论(2)
  • ASP.NET Core 入门教学十九 依赖注入ioc
  • omm kill 内存碎片化