PythonのFlaskでEXCELファイルをダウンロードさせる方法

記事内に広告が含まれています。

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

タイトルとURLをコピーしました