我正在创建一个 Flask 应用程序,提示用户输入 Excel 文件,对其进行一些处理,然后将文件返回给用户以便他们可以下载它。 (请忽略任何未使用的导入。我计划稍后使用它们。)
我的功能已关闭,我只是不确定如何将文件发送回用户以便他们可以下载它。预先感谢您的任何帮助!
这是我到目前为止所拥有的:(注意:我不太确定我是否正确实现了上传功能)
from openpyxl import load_workbook
from flask import Flask, request, render_template, redirect, url_for
app = Flask(__name__)
@app.route('/')
def index():
return """<title>Upload new File</title>
<h1>Upload new File</h1>
<form action="/uploader" method=post enctype=multipart/form-data>
<p><input type=file name=file>
<input type=submit value=Upload>
</form>"""
@app.route('/uploader', methods = ['GET', 'POST'])
def upload():
if request.method == 'POST':
f = request.files['file']
f.save(f.filename)
return process(f.filename)
def process(filename):
routename = ['ZYAA', 'ZYBB', 'ZYCC']
supervisors = ['X', 'Y', 'Z']
workbook = load_workbook(filename)
worksheet = workbook.active
worksheet.column_dimensions.group('A', 'B', hidden=True)
routes = worksheet.columns[2]
i = 2
worksheet['D1'] = 'Supervisor'
for route in routes:
if route.value in routename:
pos = routes.index(route)
worksheet['D' + str(i)].value = supervisors[pos]
print (route.value)
i += 1
workbook.save(filename)
if __name__ == '__main__':
app.run(debug = True, host = '0.0.0.0')
这取决于您是否想将该文件保留在您的服务器/计算机上。您可以执行以下操作来保留文件:
from flask import send_from_directory
def process():
# do what you're doing
file_name = 'document_template.xltx'
wb = load_workbook('document.xlsx')
wb.save(file_name, as_template=True)
return send_from_directory(file_name, as_attachment=True)
如果您不想保留文件,this片段可以帮助你。
Note:
As per Flask 1.1.1
, send_from_directory()
语法已更新。您可能需要包括directory
too.
https://flask.palletsprojects.com/en/1.1.x/api/#flask.send_from_directory
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)