2016-07-19 4 views
0

私はFlaskアプリケーションを作成していますが、ユーザーにExcelファイルを要求し、そのファイルで作業してから、ファイルをダウンロードしてユーザーにダウンロードして返します。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') 

答えて

1

か:(私は正しくアップロード機能を実装した場合、あまりにもわからないんだけどノート)ない。

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) 

そして、あなたはファイルを保存したくない場合は、スニペットはあなたを助けることができます:あなたは、ファイルを保つために、このような何かを行うことができます。

+0

回答ありがとうございます!私は仕事に着くときにそれらを試してみます。アップロード機能は、ファイルを自分のプロセス機能に正しく渡すという意味で正しいですか? – Harrison

+0

それはうまくいくと思います。 –

+0

私はstringIOのやり方を本当に分からなかった。 excelファイルをstringIOオブジェクトに書き込むにはどうすればよいですか? return send_file(filename、attachment_filename = 'output.xls'、as_attachment = True) – Harrison

関連する問題