2017-04-13 8 views
1

ボトルにファイルを返すルートを定義することは可能ですか?ボトルパンダがxlsファイルを返す

  1. 私はpandasによってアクセスされるmongoデータベースを持っています。
  2. パンダは、要求パラメータに基づいてxlsファイルを生成します。

上記の2つの手順は、実装が簡単で簡単です。 3番目のステップは問題があります。

  1. ユーザーがダウンロードするファイルを返すボトルルートを定義します。

以前に生成された静的なファイルは使用しません。

ありがとうございます。

答えて

3

私はPandasに慣れていませんが、ボトルルート経由でユーザーに送信するにはxlsファイルのバイナリコンテンツを取得する必要があります。 Pythonの3のためにhereから変形例:ユーザーはこのルートに対応するリンクをクリックすると

from io import BytesIO 
from bottle import route, response 
from pandas import ExcelWriter 


@route('/get-xlsx') 
def get_xlsx(): 
    output = BytesIO() 
    writer = ExcelWriter(output, engine='xlsxwriter') 
    # Do something with your Pandas data 
    # ... 
    pandas_dataframe.to_excel(writer, sheet_name='Sheet1') 
    writer.save() 
    response.contet_type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' 
    response.add_header('Content-Disposition', 'attachment; filename="report.xlsx"') 
    return output.getvalue() 

、「report.xlxs」のファイルダウンロードダイアログがブラウザで開きます。

+0

どうもありがとう。 BytesIOについてもう少し読んでみましょう。 –

+0

BytesIOは、メモリ内のファイルライクなオブジェクトです。 WSGIプロトコルはファイルのような反復可能なオブジェクトをペイロードとして受け入れるので、getvalue()を使わずに直接返すこともできます。 –

関連する問題