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

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

Alt

文章目录

    • 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. 启动应用 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &…...

SQLSERVER排查CPU占用高

操作系统是Windows2008R2 ,数据库是SQL2008R2 64位 64G内存,16核CPU 硬件配置还是比较高的,他说服务器运行的是金蝶K3软件,数据库实例里有多个数据库 现象 他说是这几天才出现的,而且在每天的某一个时间段才会出现CPU占用高的情况 内存占用不太高,只占用了30个G CPU…...

uniapp:富文本回显

一、使用uniapp官方的标签 rich-text&#xff1a; 会出现图片无法显示的问题&#xff0c;可以用以下方法来过滤处理 <rich-text :nodes"question.title | formatRichHtml"></rich-text> formatRichHtml(html) {if (!html) {return html;}//控制小程序…...

flink内存配置

flink内存配置 配置 TaskManager 内存 | Apache Flink...

easyexcel 导出

在使用EasyExcel库进行数据写入时&#xff0c;通常我们会使用实体类来存储数据。但是当遇到动态查询&#xff0c;无法确定属性数量和名称时&#xff0c;就需要使用Map来接收数据。然而&#xff0c;直接将Map中的数据写入Excel表格并不是一件简单的事情。接下来&#xff0c;我将…...

maven命令行安装依赖测试

mvn dependency:get -DgroupIdorg.springframework -DartifactIdspring-core -Dversion5.3.9作用&#xff1a;可用于测试配置环境变量后&#xff0c;能否下载依赖到本地仓库...

Redis 笔记

文章目录 安装 & 启动杂乱String字符串 key-valueList 有序重复列表Set 无序不重复列表SortedSet 有序集合Hash 哈希Stream 轻量级消息队列订阅模式 学习地址&#xff1a;https://www.bilibili.com/video/BV1Jj411D7oG/ 安装 & 启动 安装包地址&#xff1a; https://g…...

可穿戴智能设备应用领域以及使用意义分别有哪些?

可穿戴智能设备有哪些&#xff1f; 可穿戴智能设备是指可以佩戴在身上&#xff0c;具有智能功能和交互能力的电子设备。以下是一些常见的可穿戴智能设备&#xff1a; 智能手表&#xff1a;智能手表结合了传统手表的功能和智能设备的特性&#xff0c;可以显示时间、接收通知、监…...

【Linux操作系统】探秘Linux奥秘:文件系统的管理与使用

&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《操作系统实验室》&#x1f516;诗赋清音&#xff1a;柳垂轻絮拂人衣&#xff0c;心随风舞梦飞。 山川湖海皆可涉&#xff0c;勇者征途逐星辉。 目录 &#x1fa90;1 初识Linux OS &…...

机器学习——主成分分析(PCA)

主成分分析&#xff08;Principal Component Analysis&#xff0c;简称PCA&#xff09;是一种常用的无监督学习算法&#xff0c;用于降维和数据可视化。主要目标是将高维数据转换成低维空间&#xff0c;同时尽可能保留原始数据的信息。 PCA的主要思想是通过线性变换将原始数据…...

论最近热门的AI绘画技术—从小白绘画到文创手账设计【文末送书-13】

文章目录 &#x1f3c0;前言⚽AI绘图技术栈⚾️简单的代码实现案例&#x1f3c8;iPad萌系简笔画&#xff1a;从小白绘画到文创手账设计【文末送书-13】⛳粉丝福利&#xff1a;文末推荐与福利免费包邮送书&#xff01; &#x1f3c0;前言 AI绘画技术&#xff0c;也称为人工智能…...

python打开文件的方式比较

open(addr,w) 打开之后文件无论以前有什么&#xff0c;打开后都要清空 /// open(addr,r) 文件打开后&#xff0c;不删除以前内容...

使用Jenkins和单个模板部署多个Kubernetes组件

前言 在持续集成和部署中&#xff0c;我们通常需要部署多个实例或组件到Kubernetes集群中。通过Jenkins的管道脚本&#xff0c;我们可以自动化这个过程。在本文中&#xff0c;我将演示如何使用Jenkins Pipeline及单个YAML模板文件&#xff08;.tpl&#xff09;来部署多个类似的…...

Unity Meta Quest 一体机开发(十二):【手势追踪】Poke 交互 - 用手指点击由 3D 物体制作的 UI 按钮

文章目录 &#x1f4d5;教程说明&#x1f4d5;给玩家配置 HandPokeInteractor&#x1f4d5;用 3D 物体制作可以被点击的 UI 按钮⭐搭建物体层级⭐给物体添加脚本⭐为脚本变量赋值 &#x1f4d5;模仿官方样例按钮的样式&#x1f4d5;在按钮上添加文字&#x1f4d5;修改按钮图片 …...

Vue 3 中安装并使用 Axios 详细步骤+样例代码详解

axios详细步骤 在集成终端打开&#xff0c;使用 npm 或 yarn 安装 Axios&#xff1a; npm install axios或 yarn add axios这将在您的项目中安装 Axios。 在您的 Vue 3 项目中创建一个用于发送 HTTP 请求的模块或文件&#xff0c;比如 http.js。 在 http.js 文件中导入 Axios…...

IDEA 控制台中文出现乱码问题解决

一、问题概述 请看下图 二、问题分析 IDEA控制台输出乱码一般会有三种来源&#xff1a; ① IDEA本身编码错误 ② Tomcat日志输出编码错误 ③ 项目本身原因。 终极原因&#xff1a;IDEA编码和Tomcat编码不一致&#xff0c;统一设置为UTF-8即可。 三、解决思路 修改…...

计算机网络(1)

计算机网络&#xff08;1&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 计算机网络和因特网&#xff08;1&#xff09;因特网概念解读服务常见的服务 协议网络边缘特点强调 网络核心特点强调 小程一言 我的计算机网络专栏&#xff0c;是自己在计算机网络…...

如果我想用python自动操作手机、电脑软件,应该学python哪方面的知识呢?

Python 作为一门万能语言&#xff0c;在各方面的表现都非常好 如果我们想使用 Python 来操作手机和电脑&#xff0c;那么需要学习掌握如下几个方面的知识 1. 基本的Python编程 显而易见&#xff0c;你需要学习Python的基本语法、数据类型、控制流和函数等基本概念。这是后面…...

关于java命令行传参

关于java命令行传参 本篇文章拓展以下java中的命令行传参&#x1f60e; 有时候你希望运行一个程序的时候再传递给它消息&#xff0c;这要靠传递命令行参数给main()方法来实现。首先我们先来创建一个数组遍历。 public class Demo {public static void main(String[] args){/…...

[LeetCode][Python]389. 找不同

简单 给定两个字符串 s 和 t &#xff0c;它们只包含小写字母。 字符串 t 由字符串 s 随机重排&#xff0c;然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 示例 1&#xff1a; 输入&#xff1a;s "abcd", t "abcde" 输出&#xff1a;"…...

OpenClaw高消耗场景优化:Qwen3-32B私有镜像成本实测

OpenClaw高消耗场景优化&#xff1a;Qwen3-32B私有镜像成本实测 1. 问题背景与测试动机 最近在尝试用OpenClaw自动化处理我的日常工作流时&#xff0c;发现一个令人头疼的问题&#xff1a;长链条任务的Token消耗简直像开了水龙头一样。最夸张的一次&#xff0c;一个简单的&qu…...

蓝桥杯备赛避坑指南:从校赛落选到国三逆袭的实战经验分享

蓝桥杯备赛避坑指南&#xff1a;从校赛落选到国三逆袭的实战经验分享 第一次参加蓝桥杯校赛时&#xff0c;我连最简单的编程题都没能完整写出。看着屏幕上仅完成的两道签到题和一堆未通过的测试用例&#xff0c;那种挫败感到现在都记忆犹新。但正是这次失败&#xff0c;让我后来…...

为什么92%的FastAPI AI项目卡在流式响应?揭秘async generator阻塞根源与3种非阻塞调度模式

第一章&#xff1a;FastAPI 2.0 异步 AI 流式响应 如何实现快速接入FastAPI 2.0 原生强化了对异步流式响应&#xff08;StreamingResponse&#xff09;的支持&#xff0c;结合 async generator 可无缝对接大语言模型&#xff08;LLM&#xff09;的逐 token 输出场景&#xff0c…...

告别手动上传!RAGFlow 0.22.0 数据源同步实战:以S3和Notion为例的保姆级配置

告别手动上传&#xff01;RAGFlow 0.22.0 数据源同步实战&#xff1a;以S3和Notion为例的保姆级配置 如果你还在为知识库维护中频繁的手动上传文件而烦恼&#xff0c;RAGFlow 0.22.0版本的数据源功能将成为你的效率救星。这个功能彻底改变了传统文件管理方式&#xff0c;让数据…...

Z-Image-Turbo-rinaiqiao-huiyewunv 可视化流程设计:使用Visio绘制模型服务架构与数据流图

Z-Image-Turbo-rinaiqiao-huiyewunv 可视化流程设计&#xff1a;使用Visio绘制模型服务架构与数据流图 作为一名技术架构师&#xff0c;我经常需要向团队、客户或管理层解释一个复杂的系统是如何工作的。光靠文字描述&#xff0c;往往事倍功半。一张清晰的架构图或数据流图&am…...

ABAP开发避坑指南:绕过SAP GUI安全弹窗的5种编程方案实测

ABAP开发实战&#xff1a;5种绕过SAP GUI安全弹窗的编程方案深度解析 引言&#xff1a;SAP GUI安全机制的困境与突破 在SAP系统的日常开发与运维中&#xff0c;频繁出现的"系统试图创建文件"安全弹窗堪称ABAP开发者的噩梦。这种设计初衷为保护本地文件安全的机制&…...

SU-03T模块烧录固件保姆级教程:从‘智能公元’配置到串口下载(避坑‘路径中文’和‘重新上电’)

SU-03T固件烧录实战指南&#xff1a;从智能公元配置到串口下载全流程解析 第一次拿到SU-03T语音模块时&#xff0c;那种既兴奋又忐忑的心情我至今记忆犹新。作为一款高性能离线语音识别模块&#xff0c;SU-03T确实能带来无限可能&#xff0c;但固件烧录这个看似简单的步骤却让不…...

中文医疗大模型避坑指南:从MedBench评测看5大常见训练误区

中文医疗大模型实战避坑手册&#xff1a;从MedBench看模型训练的5个致命盲区 当ChatGPT掀起通用大模型的热潮时&#xff0c;医疗领域正在经历一场更为严谨的技术革命。不同于开放域的对话生成&#xff0c;医疗大模型的每个输出都可能直接影响临床决策——这要求开发者必须跨越专…...

DeepSeek-R1-Distill-Qwen-1.5B响应慢?函数调用优化实战解决方案

DeepSeek-R1-Distill-Qwen-1.5B响应慢&#xff1f;函数调用优化实战解决方案 你是不是也遇到过这种情况&#xff1a;好不容易在本地部署了DeepSeek-R1-Distill-Qwen-1.5B这个“小钢炮”模型&#xff0c;结果发现函数调用时响应特别慢&#xff1f;明明官方说RTX 3060能跑200 to…...

STM32CubeMX定时器避坑指南:为什么你的中断总是不触发?

STM32CubeMX定时器避坑指南&#xff1a;为什么你的中断总是不触发&#xff1f; 第一次使用STM32CubeMX配置定时器中断时&#xff0c;很多开发者都会遇到一个令人抓狂的问题——代码编译下载后&#xff0c;中断就像睡着了一样毫无反应。LED灯不闪烁、串口没输出、变量不更新&…...