flask 導出數據寫入execl


前言

  • 導出數據寫入ececl的方法有很多種,隨個人喜好選擇,可以采用保存文件的方式,也可以采用流方式。
  • 重點在於要更改響應頭類型使其支持中文名稱輸出

代碼實現

@api.route('/download')
def download():
    data = Case.query.filter_by().all()
    # 創建IO對象
    output = BytesIO()
    # 寫excel
    workbook = xlsxwriter.Workbook(output)  # 先創建一個book,直接寫到io中

    sheet = workbook.add_worksheet('sheet1')
    fileds = ['用例編號', '測試項', '測試分項', '測試點', '前置條件',
              '測試方法和步驟', '預期結果', '是否通過', '實際結果',
              '設計日期', '結論日期', '測試人員']

    # 寫入數據到A1一列
    sheet.write_row('A1', fileds)

    # 遍歷有多少行數據
    for i in range(len(data)):
        # 遍歷有多少列數據
        for x in range(len(fileds)):
            key = [key for key in data[i].keys()]
            sheet.write(i + 1, x, data[i][key[x]])
            log.info('當前行:{}  當前列:{}  數據:{}'.format(str(i), str(x), data[i][key[x]]))
    workbook.close()  # 需要關閉
    output.seek(0)  # 找到流的起始位置
    resp = make_response(output.getvalue())
    basename = '測試用例.xlsx'

    # 轉碼,支持中文名稱
    resp.headers["Content-Disposition"] = "attachment; filename*=UTF-8''{utf_filename}".format(
        utf_filename=quote(basename.encode('utf-8'))
    )

    resp.headers['Content-Type'] = 'application/x-xlsx'
    return resp


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM