Flask · Excel 导出 2026-09-02

1. 导入工具

from flask import Flask, send_from_directory from db import query_data import openpyxl import os from datetime import datetime app = Flask(__name__)

2. 下载文件夹

DOWNLOAD_DIR = 'downloads' if not os.path.exists(DOWNLOAD_DIR): os.makedirs(DOWNLOAD_DIR)

自动创建 downloads/ 目录,存放生成的 Excel。

3. 创建Excel函数 核心

create_excel(data, table_name='user') — 把数据变成 Excel 文件,保存到硬盘。

3.1 新建工作簿 & 表头

wb = openpyxl.Workbook() ws = wb.active headers = list(data[0].keys()) # ['id', 'name', 'age'] for col, header in enumerate(headers, start=1): ws.cell(row=1, column=col, value=header)

3.2 写入数据行

for row_idx, row in enumerate(data, start=2): for col_idx, header in enumerate(headers, start=1): ws.cell(row=row_idx, column=col_idx, value=row[header])

3.3 保存文件

timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") filename = f'{table_name}_{timestamp}.xlsx' filepath = os.path.join(DOWNLOAD_DIR, filename) wb.save(filepath) return filename

4. 下载路由

@app.route('/download') def download(): data = query_data("SELECT * FROM user") filename = create_excel(data, 'user') return send_from_directory(DOWNLOAD_DIR, filename, as_attachment=True)

5. 启动程序

if __name__ == '__main__': app.run(debug=True)

数据流 · 一目了然

db.query_data() → 字典列表
create_excel() 生成 .xlsx
保存到 downloads/
用户下载
比喻 · 工厂流水线
query_data 是原料仓 → create_excel 是加工车间 → send_from_directory 是发货口。每个环节各司其职。

常见问题 · 小贴士