PythonのFlaskでEXCELファイルをダウンロードさせるにはFlaskのmake_responseを利用して行います。
FlaskでEXCELファイルをダウンロードさせる
FlaskでEXCELファイルをダウンロードさせるにはFlaskのmake_responseを使います。
今回はopenpyxlモジュールを使ってEXCELファイルを生成し、そのEXCELファイルをFlaskでクライアント(ブラウザー)にダウンロードさせます。
make_responseでEXCELをブラウザーに送る
make_responseでFlaskで使えるレスポンスを生成し、そのレスポンスに対してopenpyxlモジュールを使って生成したEXCELファイルを読み込ませます。
import openpyxl as excel
from flask import make_response
def downloadExcel( filename ) :
#EXECL作成
wb = excel.Workbook()
ws = wb.active
#書き込む行、列の指定
row_num = 2
cell_num = 3
#セルにデータを書き込む
ws.cell( row_num, cell_num ).value = "テストデータ"
#ワークブックをディスクに保存
wb.save( filename )
#ワークブックをクローズ
wb.close()
#MIMEタイプを設定
XLSX_MIMETYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
#Flaskのレスポンスを作成する
response = make_response()
#ダウンロードするEXCELファイルを開く
wb = open( filename , "rb" )
#ダウンロードするEXCELファイルをレスポンスに設定する
response.data = wb.read()
#ダウンロードするEXCELファイルをクローズ
wb.close()
#ダウンロードするEXCELファイル名を設定
response.headers[ "Content-Disposition" ] = "attachment; filename=" + filename
#MIMEタイプをレスポンスに設定
response.mimetype = XLSX_MIMETYPE
#MIMEタイプをレスポンスに設定
os.remove( filename )
#Flaskにレスポンスを返す
return response
if __name__ == '__main__':
return downloadExcel( "text.xlsx" )
上記コードのdownloadExcel関数を呼び出せば指定したファイル名でブラウザーからEXCELダウンロードすることができます。
