使用python生成excel文件存储到本地,发送给前端,转换成json文件传输,替换属性(字段名称)

一、存储到本地+发送给前端+替换属性(字段名称)

def get():
    # 连接数据库
    conn = pymysql.connect(
        host='localhost',   # 数据库连接的是本地的
        user='root',
        password='数据库密码',
        database='数据库名称',
    )

    # 产生一个游标对象
    cursor = conn.cursor()
    query = 'select * from receive_goods where pay_status="1"'  # 此处为查询条件
    # query = 'select * from receive_goods'  
    cursor.execute(query)
    results = cursor.fetchall()

    # 先检查一下都得到了哪些数据
    for row in results:
        print(row)
    print('一共找到了%s条数据' % cursor.rowcount)

    # 获得表属性的描述信息
    fields = cursor.description
    workbook = xlwt.Workbook(encoding='UTF-8')
    worksheet = workbook.add_sheet('receive_goods')
    row0 = [u'创建时间', u'状态', u'订单号', u'用户id', u'退款选项', u'姓名', u'电话号码', u'省份', u'市', u'区', u'备注信息', u'费用', u'收货地址']    # 此处为修改标题的内容
    # 先将属性名称放进excel表格的第一行
    for item in range(len(fields)):
        # worksheet.write(0, item, fields[item][0])    # 此处代码为不修改标题
        worksheet.write(0, item, row0[item])

    # 再将数据一行一行的写入表格里面
    for row_number in range(1, cursor.rowcount):
        for col_number in range(0, len(fields)):
            worksheet.write(row_number, col_number, results[row_number - 1][col_number])

    nowtime = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S')   # 使用查看时间来命名文件
    file_name = '%s_已支付.xlsx' % nowtime
    workbook.save(r'此处为存储文件的目录%s' % file_name)   # 存储到本地

    cursor.close()
    conn.close()

    return send_from_directory('此处为存储文件的目录', file_name, as_attachment=True)   返回给前端文件

 

二、转换成json文件传输,返回给前端

def readExcel():
    # 打开excel表单
    filename = u'此处为文件位置+名称'
    excel = xlrd.open_workbook(filename)

    # 得到第一张表单
    sheet1 = excel.sheets()[0]
    # 找到有几列几列
    nrows = sheet1.nrows  # 行数
    ncols = sheet1.ncols  # 列数

    totalArray = []
    title = []
    # 标题
    for i in range(0, ncols):
        title.append(sheet1.cell(0, i).value)

    # 数据
    for rowindex in range(1, nrows):
        dic = {}
        for colindex in range(0, ncols):
            s = sheet1.cell(rowindex, colindex).value
            dic[title[colindex]] = s
            totalArray.append(dic)

    return json.dumps(totalArray, ensure_ascii=False)

三、有一点提示,如果测试出现中文乱码问题,前端可以解决,不用怕~

参考https://www.jb51.net/article/60510.htm

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值