Spring Boot整合 EasyExcel 实现复杂 Excel 表格的导入与导出功能

文章目录
- 1. 简介
- 2. 引入依赖
- 3. 导入功能实现
- 3.1 创建实体类
- 3.2 编写导入 Controller
- 3.3 编写导入页面
- 4. 导出功能实现
- 4.1 编写导出 Controller
- 4.2 编写导出页面
- 5. 启动应用
🎈个人主页:程序员 小侯
🎐CSDN新晋作者
🎉欢迎 👍点赞✍评论⭐收藏
✨收录专栏:Java框架
✨文章内容:整合 EasyExcel
🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗
1. 简介
EasyExcel 是阿里巴巴开源的一款基于 Java 的简单、快速、强大的 Excel 处理工具。在实际应用中,Excel 的导入与导出是常见的需求,而 EasyExcel 提供了简便的 API,使得这些操作变得非常容易。本文将介绍如何在 Spring Boot 项目中整合 EasyExcel,实现复杂 Excel 表格的导入与导出功能。

2. 引入依赖
在 pom.xml 文件中引入 EasyExcel 的依赖:
<dependencies><!-- EasyExcel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.4.3</version></dependency><!-- Spring Boot Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
3. 导入功能实现
3.1 创建实体类
创建与 Excel 表格对应的实体类,注解 @ExcelProperty 用于指定属性与 Excel 列的映射关系:
public class User {@ExcelProperty("ID")private Long id;@ExcelProperty("姓名")private String name;@ExcelProperty("年龄")private Integer age;// 省略 getter 和 setter
}
3.2 编写导入 Controller
创建导入功能的 Controller 类,使用 @PostMapping 注解处理导入请求:
@RestController
@RequestMapping("/excel")
public class ExcelController {@PostMapping("/import")public String importExcel(@RequestParam("file") MultipartFile file) {try (InputStream inputStream = file.getInputStream()) {List<User> userList = EasyExcel.read(inputStream).head(User.class).sheet().doReadSync();// 处理导入的数据,例如保存到数据库return "导入成功";} catch (Exception e) {e.printStackTrace();return "导入失败";}}
}
3.3 编写导入页面
创建导入页面,使用 HTML 表单上传 Excel 文件:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Excel导入</title>
</head>
<body><form action="/excel/import" method="post" enctype="multipart/form-data"><input type="file" name="file" accept=".xls,.xlsx"><button type="submit">导入</button></form>
</body>
</html>
4. 导出功能实现

4.1 编写导出 Controller
创建导出功能的 Controller 类,使用 @GetMapping 注解处理导出请求:
@RestController
@RequestMapping("/excel")
public class ExcelController {// 导出数据的模拟数据private List<User> mockData() {List<User> userList = new ArrayList<>();userList.add(new User(1L, "Alice", 25));userList.add(new User(2L, "Bob", 30));userList.add(new User(3L, "Charlie", 22));return userList;}@GetMapping("/export")public void exportExcel(HttpServletResponse response) {try (OutputStream outputStream = response.getOutputStream()) {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");response.setHeader("Content-disposition", "attachment;filename=user.xlsx");EasyExcel.write(outputStream, User.class).sheet("用户信息").doWrite(mockData());} catch (Exception e) {e.printStackTrace();}}
}
4.2 编写导出页面
创建导出页面,通过超链接触发导出操作:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Excel导出</title>
</head>
<body><a href="/excel/export">导出Excel</a>
</body>
</html>
5. 启动应用
启动 Spring Boot 应用,访问导入页面和导出页面,即可进行 Excel 表格的导入与导出操作。
通过以上步骤,我们成功地整合了 Spring Boot 与 EasyExcel,实现了复杂 Excel 表格的导入与导出功能。EasyExcel 提供了丰富的配置选项和灵活的 API,使得 Excel 处理变得非常简单。在实际项目中,可以根据业务需求进行更加复杂的配置和处理,满足不同场景的导入导出要求。
后记 👉👉💕💕美好的一天,到此结束,下次继续努力!欲知后续,请看下回分解,写作不易,感谢大家的支持!! 🌹🌹🌹
相关文章:
Spring Boot整合 EasyExcel 实现复杂 Excel 表格的导入与导出功能
文章目录 1. 简介2. 引入依赖3. 导入功能实现3.1 创建实体类3.2 编写导入 Controller3.3 编写导入页面 4. 导出功能实现4.1 编写导出 Controller4.2 编写导出页面 5. 启动应用 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 &…...
SQLSERVER排查CPU占用高
操作系统是Windows2008R2 ,数据库是SQL2008R2 64位 64G内存,16核CPU 硬件配置还是比较高的,他说服务器运行的是金蝶K3软件,数据库实例里有多个数据库 现象 他说是这几天才出现的,而且在每天的某一个时间段才会出现CPU占用高的情况 内存占用不太高,只占用了30个G CPU…...
uniapp:富文本回显
一、使用uniapp官方的标签 rich-text: 会出现图片无法显示的问题,可以用以下方法来过滤处理 <rich-text :nodes"question.title | formatRichHtml"></rich-text> formatRichHtml(html) {if (!html) {return html;}//控制小程序…...
flink内存配置
flink内存配置 配置 TaskManager 内存 | Apache Flink...
easyexcel 导出
在使用EasyExcel库进行数据写入时,通常我们会使用实体类来存储数据。但是当遇到动态查询,无法确定属性数量和名称时,就需要使用Map来接收数据。然而,直接将Map中的数据写入Excel表格并不是一件简单的事情。接下来,我将…...
maven命令行安装依赖测试
mvn dependency:get -DgroupIdorg.springframework -DartifactIdspring-core -Dversion5.3.9作用:可用于测试配置环境变量后,能否下载依赖到本地仓库...
Redis 笔记
文章目录 安装 & 启动杂乱String字符串 key-valueList 有序重复列表Set 无序不重复列表SortedSet 有序集合Hash 哈希Stream 轻量级消息队列订阅模式 学习地址:https://www.bilibili.com/video/BV1Jj411D7oG/ 安装 & 启动 安装包地址: https://g…...
可穿戴智能设备应用领域以及使用意义分别有哪些?
可穿戴智能设备有哪些? 可穿戴智能设备是指可以佩戴在身上,具有智能功能和交互能力的电子设备。以下是一些常见的可穿戴智能设备: 智能手表:智能手表结合了传统手表的功能和智能设备的特性,可以显示时间、接收通知、监…...
【Linux操作系统】探秘Linux奥秘:文件系统的管理与使用
🌈个人主页:Sarapines Programmer🔥 系列专栏:《操作系统实验室》🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS &…...
机器学习——主成分分析(PCA)
主成分分析(Principal Component Analysis,简称PCA)是一种常用的无监督学习算法,用于降维和数据可视化。主要目标是将高维数据转换成低维空间,同时尽可能保留原始数据的信息。 PCA的主要思想是通过线性变换将原始数据…...
论最近热门的AI绘画技术—从小白绘画到文创手账设计【文末送书-13】
文章目录 🏀前言⚽AI绘图技术栈⚾️简单的代码实现案例🏈iPad萌系简笔画:从小白绘画到文创手账设计【文末送书-13】⛳粉丝福利:文末推荐与福利免费包邮送书! 🏀前言 AI绘画技术,也称为人工智能…...
python打开文件的方式比较
open(addr,w) 打开之后文件无论以前有什么,打开后都要清空 /// open(addr,r) 文件打开后,不删除以前内容...
使用Jenkins和单个模板部署多个Kubernetes组件
前言 在持续集成和部署中,我们通常需要部署多个实例或组件到Kubernetes集群中。通过Jenkins的管道脚本,我们可以自动化这个过程。在本文中,我将演示如何使用Jenkins Pipeline及单个YAML模板文件(.tpl)来部署多个类似的…...
Unity Meta Quest 一体机开发(十二):【手势追踪】Poke 交互 - 用手指点击由 3D 物体制作的 UI 按钮
文章目录 📕教程说明📕给玩家配置 HandPokeInteractor📕用 3D 物体制作可以被点击的 UI 按钮⭐搭建物体层级⭐给物体添加脚本⭐为脚本变量赋值 📕模仿官方样例按钮的样式📕在按钮上添加文字📕修改按钮图片 …...
Vue 3 中安装并使用 Axios 详细步骤+样例代码详解
axios详细步骤 在集成终端打开,使用 npm 或 yarn 安装 Axios: npm install axios或 yarn add axios这将在您的项目中安装 Axios。 在您的 Vue 3 项目中创建一个用于发送 HTTP 请求的模块或文件,比如 http.js。 在 http.js 文件中导入 Axios…...
IDEA 控制台中文出现乱码问题解决
一、问题概述 请看下图 二、问题分析 IDEA控制台输出乱码一般会有三种来源: ① IDEA本身编码错误 ② Tomcat日志输出编码错误 ③ 项目本身原因。 终极原因:IDEA编码和Tomcat编码不一致,统一设置为UTF-8即可。 三、解决思路 修改…...
计算机网络(1)
计算机网络(1) 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 计算机网络和因特网(1)因特网概念解读服务常见的服务 协议网络边缘特点强调 网络核心特点强调 小程一言 我的计算机网络专栏,是自己在计算机网络…...
如果我想用python自动操作手机、电脑软件,应该学python哪方面的知识呢?
Python 作为一门万能语言,在各方面的表现都非常好 如果我们想使用 Python 来操作手机和电脑,那么需要学习掌握如下几个方面的知识 1. 基本的Python编程 显而易见,你需要学习Python的基本语法、数据类型、控制流和函数等基本概念。这是后面…...
关于java命令行传参
关于java命令行传参 本篇文章拓展以下java中的命令行传参😎 有时候你希望运行一个程序的时候再传递给它消息,这要靠传递命令行参数给main()方法来实现。首先我们先来创建一个数组遍历。 public class Demo {public static void main(String[] args){/…...
[LeetCode][Python]389. 找不同
简单 给定两个字符串 s 和 t ,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 示例 1: 输入:s "abcd", t "abcde" 输出:"…...
快速部署Qwen3-TTS-Tokenizer:开箱即用的高保真音频编解码器
快速部署Qwen3-TTS-Tokenizer:开箱即用的高保真音频编解码器 1. 为什么选择Qwen3-TTS-Tokenizer-12Hz? 1.1 音频处理的三大痛点 在语音AI应用中,我们经常面临以下挑战: 存储压力:原始WAV文件体积庞大,1…...
全网薅羊毛新地图”:华莱士套餐实测13.9元起,连锁巨头麦当劳紧随其后!
近期,随着经济压力的加大,餐饮市场的竞争愈发激烈。在原本以低价策略闻名的麦当劳“穷鬼套餐”开始面临严峻挑战之际,一家曾被网友戏称为“穷鬼旗舰”的连锁快餐品牌——华莱士,悄然推出了更具性价比的“超值套餐”,在…...
OpenClaw极简开发:用nanobot镜像快速验证自动化脚本
OpenClaw极简开发:用nanobot镜像快速验证自动化脚本 1. 为什么选择nanobot镜像进行OpenClaw开发 作为一名长期在本地折腾AI自动化脚本的开发者,我深知环境配置的痛。每次换机器重装OpenClaw,总要在Node.js版本、Python依赖和模型部署之间反…...
1元一包的“干脆面”,为什么一年卖了近5亿包?——从康师傅财报看休闲食品的“新风口”!
近日,市场上出现了一个让人意想不到的现象:1元左右就能买到的一包干脆面,竟然在2025年卖出了接近5亿包!这一现象背后,折射出了方便面行业从“主食”向“休闲零食”角色的成功转变,以及消费观念的深刻变迁。…...
PyFluent:3大核心场景实现CFD仿真全流程自动化
PyFluent:3大核心场景实现CFD仿真全流程自动化 【免费下载链接】pyfluent 项目地址: https://gitcode.com/gh_mirrors/pyf/pyfluent 计算流体动力学(CFD)仿真作为工程设计的关键环节,长期面临流程繁琐、迭代低效、跨学科协…...
Pixel Dream Workshop 作品集:基于LSTM时序模型生成的动态艺术画展示
Pixel Dream Workshop 作品集:基于LSTM时序模型生成的动态艺术画展示 1. 当AI遇见艺术:LSTM如何创造动态视觉叙事 在数字艺术创作领域,时序模型正带来一场革命性的变化。Pixel Dream Workshop最新推出的动态艺术画系列,展示了长…...
语言清洗令:禁用for循环的第一年——软件测试从业者的专业复盘与策略革新
2025年全球编程社区发起的“语言清洗运动”,标志着软件开发范式的重大转折。这项运动的核心是禁用传统循环语句(如for、while),以推动声明式编程的普及,减少迭代错误并提升代码可读性。作为软件测试从业者,…...
QLVideo:macOS视频管理效率提升的完整解决方案
QLVideo:macOS视频管理效率提升的完整解决方案 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: https://gitcode.com/g…...
短剧小程序源码:打造你的专属短剧平台
温馨提示:文末有资源合作获取方式~一、市场前景:千亿蓝海,风口正当时“昨晚又为一部短剧熬夜了!”这已成为当代年轻人的日常。3分钟一集,连续反转,极致爽点——短剧正以惊人的速度占领我们的碎片…...
工业质检避坑指南:手把手教你根据数据成本选择异常检测模型(RGB/PCD/多模态实战)
工业质检实战:如何基于数据成本选择最优异常检测方案 在工业质检领域,算法工程师常面临一个现实困境:实验室里刷榜的模型往往需要昂贵的数据采集设备,而工厂产线上可能只有最基础的RGB相机。我曾参与过多个工业质检项目࿰…...
