fastapi+vue实现导出功能

1.前端

1.1 tableHTML

      <el-table :data="userList" style="width: 100%; margin-top: 20px" border @selection-change="selectionChange"><el-table-column type="selection" width="50px"/><el-table-column label="序号" type="index" align="center" width="50px"/><el-table-column label="用户名" prop="name" align="center"/><el-table-column label="昵称" prop="nick_name" align="center"/><el-table-column label="邮箱" prop="email" align="center"/><el-table-column label="电话" prop="phone" align="center"/><el-table-column label="角色名称" prop="role" align="center"><template #default="scope"><el-tag v-for="item in scope.row.role" :key="item.id" style="margin-right: 10px">{{ item.name }}</el-tag></template></el-table-column><el-table-column label="操作" align="center" width="200px"><template v-slot="scope"><el-button type="primary" icon="el-icon-edit" circle @click="handleEdit(scope.row)"/><el-button type="success" icon="el-icon-refresh" circle @click="handleReset(scope.row)"/><el-button type="danger" icon="el-icon-delete" circle @click="handleDel(scope.row)"/></template></el-table-column></el-table>

1.2 table事件

    // table选择项变化的回调selectionChange(selection) {selection.forEach(item =>this.selectChecked.push(item.id))},

1.3 导出的按钮

      <el-button type="primary" icon="el-icon-upload2" style="margin-left: 20px" @click="handleExportUser">导出</el-button>

1.4 导出的api

// 导出用户
export function exportUser(params) {return request({url: '/users/export/all',method: 'get',params,responseType: 'blob'})
}

1.5 导出按钮事件

    // 导出接口async handleExportUser() {try {// 调用导出的接口const res = await exportUser({ids: this.selectChecked.join(',')})// 处理导出的Excel文件const blob = new Blob([res], {type: 'application/vnd.ms-excel;charset=utf-8'});const url = window.URL.createObjectURL(blob);const link = document.createElement('a');link.href = url;link.setAttribute('download', '用户导出表');document.body.appendChild(link);link.click();document.body.removeChild(link);window.URL.revokeObjectURL(url);} catch (error) {console.error(error)}},

2. 后端

@user_router.get('/export/all', summary='导出用户')
async def user_export(ids: str = Query(None)):if ids:products = await User.filter(id__in=eval(ids)).all().values()else:products = await User.all().values()wb = Workbook()ws = wb.activews.sheet_properties.tabColor = "1072BA"# 设置表头样式header = ws.cell(row=1, column=1)header.value = '用户表'header.alignment = Alignment(horizontal='center', vertical='center')header.font = Font(bold=True, color='FF0000')ws.merge_cells(start_row=1, start_column=1, end_row=1, end_column=3)# 设置列宽ws.column_dimensions['A'].width = 20  # 设置第一列的宽度为20ws.column_dimensions['C'].width = 20  # 设置第一列的宽度为20# 设置列宽ws.row_dimensions[1].height = 50  # 设置第一行的高度为20# 写入数据ws.append(["姓名", "昵称", "手机号码"])for product in products:ws.append([product["name"], product["nick_name"], product["phone"]])# 添加边框for row in ws.iter_rows(min_row=1, max_row=ws.max_row, min_col=1, max_col=3):for cell in row:cell.border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'),bottom=Side(style='thin'))# 遍历所有列,设置列的对其方式for col in ws.columns:for cell in col:# 设置单元格的对齐方式cell.style = 'Pandas'cell.alignment = Alignment(horizontal='center', vertical='center')# 遍历所有行,包括空行,从第二行开始,因为第一行是标题for row_idx in range(2, ws.max_row + 1):# 设置行高ws.row_dimensions[row_idx].height = 30  # 设置行高为50file_path = "products.xlsx"wb.save(file_path)return FileResponse(file_path, filename="products.xlsx",media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")

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

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

相关文章

收藏:如何轻松建立CRM系统的帮助中心

大家好&#xff0c;今天咱们来聊聊怎么给公司的CRM系统建个帮助中心。为什么CRM系统需要建立帮助中心呢&#xff1f;很简单&#xff0c;就是为了让客户、员工在遇到问题时能有个快速找到答案的地方&#xff0c;提升咱们的服务质量和内部工作效率。 一、为什么需要建立CRM系统的…

【SQL每日一练】获取PADS公司用户名称和各职业总数并根据格式输出

文章目录 题目一、解析二、题解1.MySQL 题目 生成以下两个结果集&#xff1a; 1、查询 OCCUPATIONS 表中所有名字&#xff0c;紧跟每个职业的第一个字母作为括号&#xff08;即&#xff1a;括在括号中&#xff09;&#xff0c;并按名字顺序排序。例如&#xff1a;AnActorName…

使用 Python 进行图像验证码识别训练及调用

目录 1、验证码识别原理1.1 Tensorflow 介绍1.2 Tensorflow 运行原理1.3 卷积神经网络 CNN&#xff08;Convolutional Neural Networks&#xff09; 2、验证码识别实现步骤2.1 安装第三方模块2.1.1 安装 TensorFlow 模块2.2.2 安装 cuda2.2.3 下载 cudnn 2.2 读取验证码样本形成…

audio 音频标签详解

audio标签详解&#xff08;属性js操作生命周期播放事件&#xff09;_js audio-CSDN博客

Pyside6实操笔记(一):系统页面跳转

文章目录 背景代码实现 背景 假设我们有个登录界面和注册界面&#xff0c;如果我们想要从登录界面跳转到注册界面注册用户名和密码&#xff0c;可以采取本篇博客的方式来实现。 代码实现 关键代码&#xff1a; 1.创建一个空的窗口 class shareInfo:mainwin None跳转代码 …

ShellCode详解三

直接进入正题。 在完成正式的shellcode代码导出之前&#xff0c;我们先手动的对代码进行导出&#xff0c;以使各位同学更加了解其原理。 手动注入shellcode 1、我们利用DLE工具找到上一节中我们生成的PE文件的代码段位置 上述图片就是我们的代码段位置 2、利用WinHex工具我…

IP证书签发申请

IP证书签发申请 IP证书的全称是IP SSL证书&#xff0c;其主要的作用是为IP实现https访问&#xff0c;且IP SSL证书可以完美的解决企业对于IP地址实现https加密需求。 这种类型的证书特别适合于那些没有域名只有公网IP或者不方便使用域名的企业或个人。证书允许通过特定的IP地…

Databend 开源周报第 144 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 了解 Databend …

在线制作动态图片怎么操作?一个在线制作gif的方法分享

图片在大家的生活工作中都会接触到&#xff0c;当我们想要让自己的图片更生动吸引眼球这时候就可以将几张图片制作成gif动态图。不需要下载软件&#xff0c;小白就可以在线操作&#xff0c;通过使用在线制作动态图片&#xff08;https://www.gif5.net/&#xff09;工具-GIF5工具…

笔记:准备测试手机app的自动化操作及数据采集

其实,我主要是想采集某团的店铺数据的,前段时间看他们在某音上好像好牛的样子。 经过多方搜索。我才知识以下知识。所以说,我是从零开始。 工具很多。 2、Selenium(自动化测试) 3、Appium(自动化测试) 4、Cypress(自动化测试) 5、Robot Framework(自动化测试) 6、A…

服务器被后台爆破怎么处理

服务器后台遭受密码爆破攻击是网络安全中常见的威胁之一&#xff0c;这种攻击通过不断尝试不同的用户名和密码组合来破解系统登录凭证&#xff0c;一旦成功&#xff0c;攻击者便能非法访问系统资源。 本文将介绍如何识别此类攻击&#xff0c;并采取有效措施进行防御&#xff0c…

ICode国际青少年编程竞赛- Python-5级训练场-函数练习2

ICode国际青少年编程竞赛- Python-5级训练场-函数练习2 1、 def get_item(a):Spaceship.step(1)Dev.step(a)Dev.turnLeft()Dev.step(1)Spaceship.step(1)Dev.turnRight()Dev.step(-a)Spaceship.step(1) get_item(3) get_item(2) get_item(3) get_item(1) get_item(5)2、 de…

4万字一文带你看懂车载摄像头技术、市场、发展前景

1、小孔成像 在战国初期&#xff0c;我国学者墨子&#xff08;公元前468年-公元前376年&#xff09;和弟子们完成了世界上第一个小孔成像的实验&#xff0c;并记录在《墨经》中&#xff1a;“景到&#xff0c;在午有端&#xff0c;与景长。说在端。”“景。光之人&#xff0c;煦…

荆州科技局副局长乔梁莅临湖北点赋网络科技公司参观调研

近日&#xff0c;荆州科技局副局长乔梁&#xff0c;莅临湖北点赋网络科技公司进行参观调研。点赋科技总经理崔梦娇亲自陪同&#xff0c;向副局长介绍了公司的D咖智能饮品机器人经营状况和研发进展情况。 在参观过程中&#xff0c;副局长乔梁对点赋科技的创新能力和技术成果给予…

python进阶的学习路径

学习Python进阶需要掌握以下几个方面的知识&#xff1a; 1. 数据结构和算法&#xff1a;学习常用的数据结构&#xff0c;如数组、链表、栈、队列、树和图&#xff0c;并学习相应的算法&#xff0c;如查找、排序和遍历算法。可以使用Python内置的数据结构和算法&#xff0c;也可…

太阳能光伏发电应用过程中会用到哪些光伏组件?

随着全球对可再生能源的需求日益增加&#xff0c;太阳能光伏发电已成为一种重要的清洁能源解决方案。在太阳能光伏发电系统的运行过程中&#xff0c;光伏组件作为系统的核心部分&#xff0c;起着至关重要的作用。本文将详细介绍太阳能光伏发电应用过程中会使用到的关键光伏组件…

python输出希腊字母

有时候在绘制一些函数图像时&#xff0c;需要坐标轴和图例显示希腊字母 plt.xlabel(r’ ϵ \epsilon ϵ’)

Docker容器中的SSH免密登录

简介&#xff1a;在日常的开发和测试环境中经常需要创建和管理Docker容器。有时&#xff0c;出于调试或管理的目的&#xff0c;可能需要SSH到容器内部。本文将介绍如何创建一个Docker容器&#xff0c;它在启动时自动运行SSH服务&#xff0c;并支持免密登录。 构建支持SSH的Doc…

(八)SQL基础知识练习题(选择题)(下)#CDA学习打卡

本文整理了SQL基础知识相关的练习题&#xff0c;共133道&#xff0c;可作为CDA一级的补充习题&#xff0c;也适用于刚入门初级SQL想巩固基础的同学。来源&#xff1a;如荷学数据科学题库&#xff08;技术专项-SQL&#xff09;。暂时按照原题库顺序present&#xff0c;如有需要之…

数字驱动绩效管理创新:提升效率的新路径

在当今快速发展的商业环境中&#xff0c;绩效管理已成为企业持续发展和员工个人成长的核心要素。传统的绩效管理方式往往依赖于人工操作和定性评估&#xff0c;但随着科技的进步和数字化浪潮的推进&#xff0c;数字驱动绩效管理正逐渐成为提升效率的新路径。本文将探讨数字驱动…