私はpython 3でフラスコのアプリケーションをビルドしています。私は出力に書き込み、ダウンロードに応答しようとしています。私がやっているのは、ダウンロードのためにクライアント側に送信しようとしているExcelファイルにsqlite3 dbの内容を書き込むことです。すべてがExcelファイルの作成までうまく動作しているようです。私はクライアントに送ることができません。FlaskのExcelファイルを返します
@app.route('/download', methods=['GET'])
def export_db():
values = execute("SELECT * from table",[])
wb = Workbook()
ws = wb.active
for item in values.fetchall():
ws.append(item)
wb.save('example.xlsx')
output = make_response(wb)
output.headers["Content-Disposition"] = "attachment; filename=" +
"example.xlsx"
output.headers["Content-type"] = "application/vnd.openxmlformats-
officedocument.spreadsheetml.sheet"
return output
私が受信したエラーメッセージがされた、
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1612,
in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1598,
in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/user/Documents/main.py",
line 218, in export_db
output = make_response(wb)
File "/usr/local/lib/python3.5/dist-packages/flask/helpers.py", line
191, in make_response
return current_app.make_response(args)
File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1740,
in make_response
rv = self.response_class.force_type(rv, request.environ)
File "/usr/local/lib/python3.5/dist-packages/werkzeug/wrappers.py",
line 911, in force_type
response = BaseResponse(*_run_wsgi_app(response, environ))
File "/usr/local/lib/python3.5/dist-packages/werkzeug/wrappers.py",
line 59, in _run_wsgi_app
return _run_wsgi_app(*args)
File "/usr/local/lib/python3.5/dist-packages/werkzeug/test.py", line
884, in run_wsgi_app
app_rv = app(environ, start_response)
TypeError: 'Workbook' object is not callable
私は同様の質問のカップルを参照しているが、それらのどれも助けるように見えるん。どんな助けもありがとう。
注:make_responseにファイルパスを追加しようとすると、ファイルパスが文字列として取り込まれ、ファイルパスがコンテンツとして含まれた.xlsxファイルが返されます。私が間違っていることは何ですか?
このような何かが動作するはず
あなたはmake_response' 'への入力として不正なオブジェクトを提供しているように思えます。サポートされているオブジェクトは[Flask.make_response](http://flask.pocoo.org/docs/0.12/api/#flask.Flask.make_response)にリストされています – JRajan
@JRajan私はopenpyxl、 xwlt。それらのすべてが同じエラーを返します。私はサポートされている形式でExcelファイルを渡したいと思います。それをする方法がわからないのですか? –
あなたはcsvモジュールを試しましたか? –