Flask应用程序输出Excel fi

2024-04-30 03:22:53 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我目前所拥有的。。。我的应用程序正在输出一个excel文件,我只是不知道如何输出一个包含我数据的excel文件。现在它只是输出一个excel文件,其中只包含单元格A1中的“test”,我知道这是因为我的一行代码strIO.write('test')。如何确保作为下载输出到用户的文件包含我处理的文件中的所有信息?在

谢谢。在

from openpyxl import load_workbook
from flask import Flask, request, render_template, redirect, url_for, send_file
import StringIO


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]
            i += 1

    workbook.save(filename)
    filename = filename.strip(".xlsx")
    filename = filename + ".xls"

    strIO = StringIO.StringIO()
    strIO.write('test')
    strIO.seek(0)
    return send_file(strIO,
                     attachment_filename=filename,
                     as_attachment=True)




if __name__ == '__main__':
    app.run(debug = True, host = '0.0.0.0')

Tags: 文件nametestimportapprequestdeffilename
1条回答
网友
1楼 · 发布于 2024-04-30 03:22:53

flask中的send_file函数发送您在第一个参数中指定的文件(与documentation比较)。您将strIO放在那里,这意味着保存在那里的字符串将被发送。如果你想发送你之前准备好的文件,你应该把它放在那里

send_file(filename, attachment_filename=filename, as_attachment=True)

相关问题 更多 >