flask实现从MySql中获取数据生成excel文件下载
flask实现从MySql中获取数据生成excel文件下载
示例说明:
本程序将mysql数据库中的数据生成excel文件,提供给web用户下载。在展示所有学生信息的页面/show_students 。 添加一个下载按钮,点击按钮可以下载包含全部学生信息的excel表格文件。
完成效果动态截图如下:
在下载目录downloads中的截图:
实现步骤说明:
1.读取MySql
2.生成excel文件
生成excel文件下载数据保存在downloads文件目录中
2.1使用时间函数生成文件名
2.2使用xlwt模块生成excel
3.发送下载
具体flask代码:
#生成下载excel文件 def create_excel(data_dir,fanme): fpath = os.path.join(data_dir,fanme) workbook = xlwt.Workbook(encoding="utf-8") #workbook是整个excel对象 utf-8编码支持中文 worksheet = workbook.add_sheet("stu") #将内容写入excel for idx,name in enumerate(["学号","姓名","性别","年龄","邮箱"]): worksheet.write(0,idx,name) #表头:0是第一行,idx是列,name是名称 sql = "select stuid,name,sex,age,email from student" datas = db.query_data(sql) for row,data in enumerate(datas): for col ,kv in enumerate(data.items()): worksheet.write(row+1,col,kv[1]) workbook.save(fpath) #保存 #下载url路由 @app.route("/download_stu_excel") def download_stu(): data_dir = os.path.join(app.root_path,"downloads") #存放excel下载文件的绝对路径 now_time =datetime.datetime.now().strftime("%Y%m%d_%H%M%S") #等到当前时间并格式化 fanme = f'stu_{now_time}.xls' #下载文件的名字 #生成excel文件 create_excel(data_dir,fanme) return send_from_directory(data_dir,fanme,as_attachment=True)