数据库数据导出到Excel表格

1.后端代码

第一步:UserMapper定义根据ID列表批量查询用户方法

    // 批量查询用户信息List<User> selectUserByIds(List<Integer> ids);

第二步:UserMapper.xml写动态SQL,实现批量查询用户 

<!--根据Ids批量查询用户--><select id="selectUserByIds" resultType="com.example.deepseek.account.pojo.entity.User">SELECT *FROM usersWHERE id in<foreach collection="ids" item="id" open="(" separator="," close=")">#{id}</foreach></select>

第三步:UserService中定义批量查询接口

/*** 根据Ids批量查询用户信息,用于导出用户信息到Excel* @return Excel文件*/List<User> selectUserByIds(List<Integer> ids);

第四步:UserServiceImpl中实现Service接口

/*** 根据Ids批量查询用户信息,用于批量导出用户信息** @param ids 用户id列表* @return*/@Overridepublic List<User> selectUserByIds(List<Integer> ids) {return userMapper.selectUserByIds(ids);}

第五步:FileController中调用UserService方法,并配置导出Excel表格的相关设置

/*** 导出数据库数据到Excel*/@GetMapping("/exportUser")public void exportExcel(@RequestParam(value = "ids") List<Integer> ids, HttpServletResponse response) throws IOException {// 1. 查询数据库中的用户数据List<User> userList = userService.selectUserByIds(ids);// 2. 构建Writer对象ExcelWriter writer = ExcelUtil.getWriter(true);// 3. 设置中文表头writer.addHeaderAlias("id", "编号");writer.addHeaderAlias("name", "用户名");writer.addHeaderAlias("role", "角色");writer.addHeaderAlias("email", "邮箱");writer.addHeaderAlias("phone", "手机号");writer.addHeaderAlias("avatar", "头像地址");writer.addHeaderAlias("createTime", "创建时间");writer.addHeaderAlias("updateTime", "更新时间");// 4. 写出数据到sheet// 默认的,未添加alias的属性也会写出;但是如果想要只输出加了别名的字段,可以调用此方法writer.setOnlyAlias(true);// 4. 写出数据到writerwriter.write(userList);// 5. 设置输出的文件的名称以及输出流的头信息response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");String fileName = URLEncoder.encode("管理员信息", String.valueOf(StandardCharsets.UTF_8));response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");// 6. 写出到输出流 并关闭 writerServletOutputStream os = response.getOutputStream();writer.flush(response.getOutputStream(), true);  // 自动flushwriter.close();}

 第六步:使用测试工具(Postman、Apifox等)测试后端导出接口

(1)由于后端接口返回的是数据格式是Binary,所以需要先设置接口的返回响应的内容格式为Binary。

 (2)添加请求参数,发送请求。

(3) 发送之后可以看到是乱码,但是右边响应是200。这个时候我们只需点击下载按钮即可将导出的表格进行下载。

2.前端代码

第一步:<template>

 <!--选择列--><el-table-column type="selection" width="50"/>.    .    .    .    .     ..    .    .    .    .     ..    .    .    .    .     .<el-button type="primary" @click="handleExport">批量导出</el-button>

第二步:<script>

// 存储选中用户的ID
const selectedIds = ref(new Set())// 批量导出用户
const handleExport = async () => {if (!selectedIds.value.size) {ElMessage.warning('请先选择要导出的用户');return;}const ids = Array.from(selectedIds.value);console.log(ids);let url = `http://localhost:8080/api/file/exportUser?ids=${ids.join(',')}`;window.open(url);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/84760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Altera系列FPGA基于ADV7180解码PAL视频,纯verilog去隔行,提供2套Quartus工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目Altera系列FPGA相关方案推荐我这里已有的PAL视频解码方案 3、设计思路框架工程设计原理框图输入PAL相机ADV7180芯片解读BT656视频解码模块图像缓存架构输出视频格式转…

【教程】Windows安全中心扫描设置排除文件

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 背景说明 解决方法 背景说明 即使已经把实时防护等设置全都关了&#xff0c;但Windows还是会不定时给你扫描&#xff0c;然后把风险软件给删了…

OPenCV CUDA模块立体匹配------对立体匹配生成的视差图进行双边滤波处理类cv::cuda::DisparityBilateralFilter

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::cuda::DisparityBilateralFilter 是 OpenCV CUDA 模块中的一个类&#xff0c;用于对立体匹配生成的视差图进行双边滤波处理。这种滤波方法可…

自然语言处理期末复习

自然语言处理期末复习 一单元 自然语言处理基础 两个核心任务&#xff1a; 自然语言理解&#xff08;NLU, Natural Language Understanding&#xff09; 让计算机“读懂”人类语言&#xff0c;理解文本的语义、结构和意图。 典型子任务包括&#xff1a;分词、词性标注、句法分…

黄仁勋在2025年巴黎VivaTech大会上的GTC演讲:AI工厂驱动的工业革命(上)

引言 2025年6月12日,在巴黎VivaTech大会上,英伟达创始人兼CEO黄仁勋发表了题为"AI工厂驱动的工业革命"的GTC主题演讲。这场持续约1小时35分钟的演讲不仅详细阐述了英伟达在AI基础设施、智能体技术、量子计算及机器人领域的最新突破,更系统性地勾勒出了人工智能如…

DMC-E 系列总线控制卡----雷赛板卡介绍(六)

应用软件开发方法 DMC-E 系列总线运动控制卡的应用软件可以在 Visual Basic 、 Visual C++ 、 C# 等高级语言 环境下开发。应用软件开发之前,需保证 DMC-E 系列总线运动控制卡连接好从站,通过控制 卡 Motion 的 EtherCAT 总线配置界面扫描从站、设置总线通信周期…

题目类型——左右逢源

1、针对的题目&#xff1a;&#xff08;不一定正确或完整&#xff09; 数据结构为数组之类的线性结构&#xff08;也许可以拓展&#xff09;&#xff0c;于是数组中每个元素和其他元素的相对关系为左右或前后需要对数组中每个元素求解或者说最终解要根据每个元素的解得出每个元…

RAG检索前处理

1. 查询构建&#xff08;包括Text2SQL&#xff09; 查询构建的相关技术栈&#xff1a; Text-to-SQLText-to-Cypher 从查询中提取元数据&#xff08;Self-query Retriever&#xff09; 1.1 Text-to-SQL&#xff08;关系数据库&#xff09; 1.1.1 大语言模型方法Text-to-SQL样…

OmoFun动漫官网,动漫共和国最新入口|网页版

OmoFun 动漫&#xff0c;又叫动漫共和国&#xff0c;是一个专注于提供丰富动漫资源的在线平台&#xff0c;深受广大动漫爱好者的喜爱。它汇集了海量的动漫资源&#xff0c;涵盖日本动漫、国产动漫、欧美动漫等多种类型&#xff0c;无论是最新上映的热门番剧还是经典老番&#x…

ue5的blender4.1groom毛发插件v012安装和使用方法(排除了冲突错误)

关键出错不出错是看这个文件pyalembic-1.8.8-cp311-cp311-win_amd64.whl&#xff0c;解决和Alembic SQL工具&#xff09;的加载冲突&#xff01; 其他blender版本根据其内部的python版本选择对应的文件解压安装。 1、安装插件&#xff01;把GroomExporter_v012_Blender4.1.1(原…

windows安装jekyll

windows安装jekyll 安装ruby 首先需要下载ruby RubyInstaller for Windows - RubyInstaller国内镜像站 我的操作系统是win10所以我安装的最新版&#xff0c;你们安装的时候&#xff0c;也可以安装最新版&#xff0c;我这里就不附加图片了 如果你的ruby安装完成之后&#x…

DBever工具自适应mysql不同版本的连接

DBever工具的连接便捷性 最近在使用DBever工具连接不同版本的mysql数据库&#xff0c;发现这个工具确实比mysql-log工具要兼容性好很多&#xff0c;直接就可以连接不同版本的数据库&#xff0c;比如常见的mysql数据库版本&#xff1a;8.0和5.7&#xff0c;而且链接成功后&…

K8S认证|CKS题库+答案| 10. Trivy 扫描镜像安全漏洞

目录 10. Trivy 扫描镜像安全漏洞 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换到master并提权 3&#xff09;、查看Pod和镜像对应关系 4&#xff09;、查看并去重镜像名称 5&#xff09;、扫描所有镜…

Rust高级抽象

Rust 的高级抽象能力是其核心优势之一&#xff0c;允许开发者通过特征&#xff08;Traits&#xff09;、泛型&#xff08;Generics&#xff09;、闭包&#xff08;Closures&#xff09;、迭代器&#xff08;Iterators&#xff09;等机制实现高度灵活和可复用的代码。今天我们来…

Vue里面的映射方法

111.getters配置项 112.mapstate和mapgetter 113.&#xfeff;mapActions与&#xfeff;mapMutations 114.多组件共享数据 115.vuex模块化&#xff0c;namespaces1 116.name&#xfeff;s&#xfeff;pace2

Node.js特训专栏-基础篇:2. JavaScript核心知识在Node.js中的应用

我将从变量、函数、异步编程等方面入手&#xff0c;结合Node.js实际应用场景&#xff0c;为你详细阐述JavaScript核心知识在其中的运用&#xff1a; JavaScript核心知识在Node.js中的应用 在当今的软件开发领域&#xff0c;Node.js凭借其高效的性能和强大的功能&#xff0c;成…

负载均衡LB》》LVS

LO 接口 LVS简介 LVS&#xff08;Linux Virtual Server&#xff09;即Linux虚拟服务器&#xff0c;是由章文嵩博士主导的开源负载均衡项目&#xff0c;通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器集群&#xff0c;它具有良好可靠性、可扩展性和可…

Modbus TCP转DeviceNet网关配置温控仪配置案例

某工厂生产线需将Modbus TCP协议的智能仪表接入DeviceNet网络&#xff08;主站为PLC&#xff0c;如Rockwell ControlLogix&#xff09;&#xff0c;实现集中监控。需通过开疆智能Modbus TCP转DeviceNet网关KJ-DVCZ-MTCPS完成协议转换。Modbus TCP设备&#xff1a;温控器&#x…

Lodash原型污染漏洞原理详解

文中涉及操作均来自靶场&#xff0c;切勿用于非授权渗透测试&#xff01; 一、JavaScript原型链基础 要理解原型污染漏洞&#xff0c;首先需要掌握JavaScript中原型(prototype)和原型链(prototype chain)的基本概念。 1.1 什么是原型 JavaScript是一种基于原型的语言&#…

django 获取当前时间 格式 YYYY-MM-DD HH:Mm:ss

在 Django 中获取当前时间并以特定的格式显示&#xff0c;你可以使用 Python 的 datetime 模块结合 Django 的 timezone 模块。这里有两种主要的方法来做到这一点&#xff1a; 方法1&#xff1a;使用 datetime 和 timezone 首先&#xff0c;确保你已经导入了必要的模块&#x…