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ダウンロードすることができます。