Flask下载文件接口,以excl表哥为例

一、response

        1、定义写入表哥的代码   

def create_excel_xls(path, sheet_name, value):index = len(value)  # 获取需要写入数据的行数workbook = xlwt.Workbook()  # 新建一个工作簿sheet = workbook.add_sheet(sheet_name)  # 在工作簿中新建一个表格for i in range(0, index):for j in range(0, len(value[i])):sheet.write(i, j, value[i][j])  # 像表格中写入数据(对应的行和列)workbook.save(path)  # 保存工作簿print("raffle.xls表格创建成功!")def write_excel_xls_append(path, value):index = len(value)  # 获取需要写入数据的行数workbook = xlrd.open_workbook(path)  # 打开工作簿sheets = workbook.sheet_names()  # 获取工作簿中的所有表格worksheet = workbook.sheet_by_name(sheets[0])  # 获取工作簿中所有表格中的的第一个表格rows_old = worksheet.nrows  # 获取表格中已存在的数据的行数new_workbook = copy(workbook)  # 将xlrd对象拷贝转化为xlwt对象new_worksheet = new_workbook.get_sheet(0)  # 获取转化后工作簿中的第一个表格for i in range(0, index):for j in range(0, len(value[i])):new_worksheet.write(i + rows_old, j, value[i][j])  # 追加写入数据,注意是从i+rows_old行开始写入new_workbook.save(path)  # 保存工作簿print("raffle.xls表格【追加】写入数据成功!")

        接口实现

        


@app.route('/result/download', methods=['GET'])
def raffle_file():"""下载抽中名单表格"""book_name_xls = 'raffle.xls'sheet_name_xls = '答题中奖名单'value_title = [["问题", "答案", "区", "排", "坐", "时间"], ]Session = sessionmaker(bind=engine, autocommit=False)session = Session()audience = session.query(CfsResult.question, CfsResult.answer, CfsResult.part, CfsResult.row, CfsResult.seat, CfsResult.update_time).filter().all()session.close()create_excel_xls(book_name_xls, sheet_name_xls, value_title)write_excel_xls_append(book_name_xls, audience)# response实现fileData = open(book_name_xls, 'rb').read()response = app.make_response(fileData)response.headers["Content-Disposition"] = 'attachment; filename={}'.format(book_name_xls)response.headers["Content-Type"] = 'application/x-xlsx'return response# send_file实现return send_file(book_name_xls, as_attachment=True)

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

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

相关文章

使用Redis做数据缓存

目的 本关目的:使用Redis实现数据缓存。 相关知识 本文将将会你掌握:1.将数据加入缓存队列,2.缓存数据。 在我之前的文章中提到了实现了使用 Redis 做动态页面缓存,以此提高访问速度,但同时…

【AntDB 数据库】国产数据库发展之信创政策的加持

由于我国在信息技术领域起步较晚,国内大量的市场份额被国际IT巨头占据,甚至长期处于被垄断的地位,这也给了某些国家妄图通过挑起科技、贸易摩擦制衡我国发展的机会。为了解决可能存在的安全风险,在重要信息系统、关键基础设施中使…

什么牌子的开放式耳机好?开放式耳机选购指南来了!

在当今音频科技不断演进的时代,开放式耳机作为一种受欢迎的音频设备,吸引着越来越多的消费者,与封闭式耳机相比,开放式耳机在音质表现和舒适度上都具有独特的优势,在众多品牌和型号中选择一款满足个人需求的开放式耳机…

L1-022:奇偶分家

题目描述 给定N个正整数,请统计奇数和偶数各有多少个? 输入格式: 输入第一行给出一个正整N(≤1000);第2行给出N个非负整数,以空格分隔。 输出格式: 在一行中先后输出奇数的个数、偶数…

劲松中西医结合医院回应:选择HPV医院标准及注意事项

随着目前我国HPV感染人群不断增多,其健康形势不容乐观,因此选择一家好的HPV医院对于恢复健康至关重要。HPV感染人群在选择HPV医院时,往往需要关注多个方面的因素。以下是一些具体建议,在难以抉择时可作为参考: 一、考…

C 语言格式化输出时间

本文部分内容借助于 AI 生成~ struct tm 是C语言标准库 <time.h> 中自带的结构体类型之一。它用于表示日历时间和日期时间的组成部分。 struct tm 结构体定义了以下成员变量&#xff1a; int tm_sec: 秒&#xff08;0-59&#xff09;int tm_min: 分钟&#xff08;0-59…

L1-024:后天

题目描述 如果今天是星期三&#xff0c;后天就是星期五&#xff1b;如果今天是星期六&#xff0c;后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天&#xff0c;请你输出那天的“后天”是星期几。 输入格式&#xff1a; 输入第一行给出一个正整数D&#xff08;1 …

LeetCode 13 罗马数字转整数

题目描述 罗马数字转整数 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M …

二.数据结构——数组

数组的定义 是一种由相同类型的元素组成的数据结构。它在内存中连续存储着一系列的元素&#xff0c;并且通过每个元素的索引来访问数组中的特定元素。数组的容量也就是长度会在一开始就被确定 优点 快速访问&#xff1a;由于数组的元素被存储在连续的内存位置中&#xff0c;因…

Linux 环境部署RabbitMQ

1.单机部署 我们在Centos7虚拟机中使用Docker来安装。 1.1.下载镜像 方式一&#xff1a;在线拉取 docker pull rabbitmq:3-management 方式二&#xff1a;从本地加载&#xff08;本文章带有mq安装包&#xff09; docker load -i mq.tar 1.2.安装MQ 执行下面的命令来运行…

CEN02 - Installing Python on Your Computer

文章目录 I. IntroductionII. Installing Python1. Download the latest version of Python from the official website2. Run the installer and follow the installation wizard3. Ensure that the "Add Python.exe to PATH" checkbox is checked for easier comma…

【华为OD题库-071】字符串筛选排序-java

题目 输入一个由n个大小写字母组成的字符串&#xff0c;按照Ascii码值从小到大的排序规则&#xff0c;查找字符串一中第k个最小ascii码值的字母(k> 1)&#xff0c;输出该字母所在字符串的位置索引(字符串的第一个字符位置索引为0)。 k如果大于字符串长度&#xff0c;则输出最…

阻碍“元宇宙”游戏行业发展的最大瓶颈是什么?

很显然&#xff0c;我们现在还没看到真正的“元宇宙”产品&#xff0c;在3-5年内也不太可能看到这样的产品。按照米哈游CEO蔡浩宇的说法&#xff0c;2030年希望建成一个“上亿人愿意生活在其中的虚拟世界”&#xff0c;那也是八年以后的事情了。 原因很简单&#xff1a;技术不成…

如何在任何STM32上面安装micro_ros

就我知道的&#xff1a;micro-ros只能在特定的昂贵的开发板上面运行&#xff0c;但是偶然发现了这个文章&#xff0c;似乎提供了一个全新的方式来在ros2和单片机之间通讯&#xff0c;如果能够这样肯定也能够提高效率&#xff0c;但即使不行&#xff0c;使用串口库也应该比较简单…

【开题报告】基于微信小程序的个人健康监测系统的设计与实现

1.选题背景 随着人们生活水平的提高和健康意识的增强&#xff0c;个人健康管理越来越受到重视。然而&#xff0c;传统的健康管理方式存在信息不便捷、数据记录困难、监测分析不及时等问题。随着智能手机和移动互联网的普及&#xff0c;微信作为中国最大的社交平台之一&#xf…

机械设备展示预约小程序作业是什么

机械产品具备较高的市场需求度&#xff0c;由于具备批发和高价格属性&#xff0c;所以除了线下公司/门店外&#xff0c;线上主要以展示、咨询、获取线索转化等为主&#xff0c;当然线上直接销售也有很高的直接转化率。 那么商家通过【雨科】平台搭建机械设备展示预约小程序能实…

无需公网IP实现公网远程访问本地WebDAV服务

windows搭建WebDAV服务&#xff0c;并内网穿透公网访问【无公网IP】 文章目录 windows搭建WebDAV服务&#xff0c;并内网穿透公网访问【无公网IP】1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访…

【虚拟机磁盘扩容】 centos7把/dev/sda的磁盘空间分给根目录

一、修改硬盘大小 关闭虚拟机→设置→硬盘→修改到自己需要的磁盘大小 二、查看根目录当前磁盘使用情况统计 df -h 注&#xff1a;虽然在第1步已经设置过新的磁盘大小为50G&#xff0c;但是这里明显可以看出总磁盘大小依旧是之前的20G&#xff0c;这就涉及到分区问题。 三、…

go基础语法10问(1)

1.使用值为 nil 的 slice、map会发生啥 允许对值为 nil 的 slice 添加元素&#xff0c;但对值为 nil 的 map 添加元素&#xff0c;则会造成运行时 panic。 // map 错误示例 func main() {var m map[string]intm["one"] 1 // error: panic: assignment to entry i…

物联网安全芯片ACL16 采用 32 位内核,片内集成多种安全密码模块 且低成本、低功耗

ACL16 芯片是研制的一款32 位的安全芯片&#xff0c;专门面向低成本、低功耗的应用领域&#xff0c; 特别针对各类 USB KEY 和安全 SE 等市场提供完善而有竞争力的解决方案。芯片采用 32 位内核&#xff0c;片内集成多种安全密码模块&#xff0c;包括SM1、 SM2、SM3、 SM4 算法…