2016-07-19 40 views
-1

ここに私の現在の内容があります。私のアプリケーションはExcelファイルを出力していますが、私のデータが入っているExcelファイルを出力する方法は分かりません。今は、ちょうどセルA1の "テスト"を含むExcelファイルを出力しています。私はそれがstrIO.write('test')と言う行のためだと知っています。ユーザーにダウンロードして出力するファイルに、処理したファイルのすべての情報が含まれていることを確認するにはどうすればよいですか?Flask App出力Excelファイル

ありがとうございました。

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') 
+1

テスト文字列の代わりに作成したファイルを送信してください。 – syntonym

+0

Hmm。どのように見えるだろうか? return send_file(filename、attachment_filename = filename、as_attachment = True)? – Harrison

+0

はい。 (それがうまくいかない場合は、あなたが得ている例外を追加してください) – syntonym

答えて

1

フラスコ内send_file機能を使用すると、最初の引数で指定されたファイルを送信する(documentationと比較)。 strIOを置くと、そこに保存した文字列が送信されます。以前に準備していたファイルを送信する場合は、そのファイルをそこに置く必要があります。

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

私はこれに問題があります。あなたはこれを見てください:https://stackoverflow.com/questions/38464974/flask-app-only-only-works-1-time-for-file-output – Harrison

関連する問題