zoukankan      html  css  js  c++  java
  • flask连接mysql导出excel表格在客户端提供提供下载功能

    flask连接mysql导出excel表格在客户端提供提供下载功能

    xlwt

    ​ 可以实现指定表单、指定单元格的写入。支持excel03版到excel2013版,保存的格式只支持xls格式,07以后的版本xlsx不支持。

    StringIO

    ​ 很多时候,数据读写不一定是文件,也可以在内存中读写。StringIO顾名思义就是在内存中读写str。

    要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可

    BytesIO

    ​ StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO。BytesIO实现了在内存中读写bytes,我们创建一个BytesIO,然后写入一些bytes

    flask连接mysql导出excel

    from flask import Flask, make_response,render_template
    import pymysql
    from io import BytesIO
    import xlwt
    
    db = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='test1', charset='utf8')
    
    
    def db_data():
        sql = 'select * from user;'
        cc = db.cursor()  # 创建游标
        cc.execute(sql)  # 执行sql语句
        return cc.fetchall()  # 返回查到所有的数据
    
    
    app = Flask(__name__)
    @app.route('/')
    def index():
        return render_template('user.html')
    
    @app.route('/download')
    def download_data():
        ret = db_data()
        wb = xlwt.Workbook(encoding='utf-8')  # 实例化
        ws = wb.add_sheet('res', cell_overwrite_ok=True)  # Workbook的方法,生成res.xls的文件
        row = ['id', 'name']
        for i in range(0, len(row)):
            ws.write(0, i, row[i])  # 将这些字段写入res.xls文件
        k = 1
        for i in ret:
            for j in range(len(row)):  # 在每列添加数据
                ws.write(k, j, i[j])
            k += 1
    
        sio = BytesIO()  # 将获取的数据在内存中写
        wb.save(sio)  # 将文件流保存
        sio.seek(0)  # 光标
    
        response = make_response(sio.getvalue())
        response.headers['Content-type'] = 'application/vnd.ms-excel'  # 指定返回数据类型
        response.headers['Transfer-Encoding'] = 'chunked'
        response.headers['Content-Disposition'] = 'attachment;filename=res.xls'  # 设定用户游览器保存的文件名
        return response
    
    if __name__ == '__main__':
        app.run()
    
  • 相关阅读:
    浙大版《C语言程序设计(第3版)》题目集 --总结
    | C语言I作业09
    c语言课本及pta作业中运用到的程序思维
    | C语言I作业08
    团队作业(四):描述设计
    实验三《敏捷开发与XP实践》_实验报告
    MyOD(课下作业,选做)
    实验二《面向对象程序设计》_实验报告
    20175226 2018-2019-2《java程序设计》结对编程-四则运算(第二周-阶段总结)
    20175226 类定义
  • 原文地址:https://www.cnblogs.com/maqian/p/13375270.html
Copyright © 2011-2022 走看看