python - 如何强制将python输出保存为excel文件?
问题描述
我有一个在服务器上运行的 python 脚本。结果,它使用 openpyxl 库创建了一个 excel 工作簿,我在服务器磁盘上的 tempfile 中的 tempfile 库的帮助下将它写在磁盘上。但此时,我想让客户端的浏览器也下载工作簿。我应该怎么办?
这是我的代码:
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
file = request.files['file']
if file:# and allowed_file(file.filename):
filename = secure_filename(file.filename)
output = gen_file(file)
#gen_file makes a new excel workbook from the uploaded file
return output
return '''
<!doctype html>
<title>Upload new File</title>
<h1>Upload new File</h1>
<form action="" method=post enctype=multipart/form-data>
<p><input type=file name=file>
<input type=submit value=Upload>
</form>
'''
这是我的 gen_file 函数的最后一部分
with NamedTemporaryFile(suffix=".xlsx",dir=".",delete=False) as tmp:
output_workbook.save(tmp)
return tmp.name
解决方案
如果您使用的是烧瓶,您的选择是直接从您的烧瓶应用程序提供文件,或者使用负载均衡器nginx
,并将您的文件放在nginx
的公共目录中。
对于第一个选项,您可以使用以下内容:
from flask import Response
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
file = request.files['file']
if file:# and allowed_file(file.filename):
filename = secure_filename(file.filename)
output = gen_file(file)
#gen_file makes a new excel workbook from the uploaded file
file_content = open(output, 'r').read()
return Response(
file_content,
mimetype="text",
headers={"Content-disposition":
f"attachment; filename=anything.csv"})
<file_content>
可以是任何东西。您可以使用 python 的内置函数读取文件内容,例如open
.
推荐阅读
- scala - Spark-Submit 错误:无法从 JAR 文件加载主类
- algorithm - 当给定要删除的节点时,为什么在单链表和双链表中都没有删除 O(1)?
- codeigniter-3 - 多张图片不上传,总是第一张图片
- php - Laravel 队列主管不会重新读取更新
- ios - 第二次关闭应用程序后不出现本地通知
- opengl - OpenGL 3.0 中没有光源的光
- python - 如何有一个行为类似于 bash 输入的 python 输入?
- amazon-web-services - CORS 策略已阻止从源“http://localhost:3000”获取 $AWS_LAMBDA_SITE 的访问权限
- cordova - 无法为 Ionic 4 应用程序创建/生成 .apk 和 .ipa 文件
- vue.js - Vue-ChartJS 没有反应