2017-04-13 72 views
1

是否有可能在瓶子中定義一條返回文件的路線?瓶熊貓返回xls文件

  1. 我有一個被熊貓訪問的mongo數據庫。
  2. 熊貓根據請求參數生成一個xls文件。

以上兩個步驟清晰易行。 第三步是我遇到問題的那一步。

  1. 定義一個瓶子路線,它將返回一個文件供用戶下載。

我不想使用以前生成的靜態文件。

在此先感謝。

回答

3

我對熊貓不太熟悉,但是您需要將xls文件的二進制內容通過Bottle路由發送給用戶。修改例如從here爲Python 3:

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是一個類似於內存文件的對象。我猜你甚至可以在沒有getvalue()的情況下直接返回它,因爲WSGI協議接受類似文件的可迭代對象作爲有效載荷。 –