python生成xls,以字节方式上传阿里云oss

# !/usr/bin/env python3
# -*- coding: utf-8 -*-
import xlwt
import oss2
from xlwt import CompoundDoc


def download_url(exe_id, data):
# 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
auth = oss2.Auth('***', '***')
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'https://oss-cn-***.aliyuncs.com', '***')
work_book = xlwt.Workbook(encoding='utf-8')
sheet = work_book.add_sheet('****')
sheet.write(0, 0, 't_code')
sheet.write(0, 1, 'pin_code')
row_count = 0
for t_code, pin_code in data.items():
row_count += 1
sheet.write(row_count, 0, f'{t_code}')
sheet.write(row_count, 1, f'{pin_code}')
# 根据xlwt实例对象的save()方法获取xls文件所需字节
doc = CompoundDoc.XlsDoc()
stream = work_book.get_biff_data()
padding = b'\x00' * (0x1000 - (len(stream) % 0x1000))
doc.book_stream_len = len(stream) + len(padding)
doc._build_directory()
doc._build_sat()
doc._build_header()
# 拼接xls文件字节
data = doc.header+doc.packed_MSAT_1st+stream+padding+doc.packed_MSAT_2nd+doc.packed_SAT+doc.dir_stream
# 以字节方式上传oss
bucket.put_object(f'{exe_id}.xls', data)
return f'https://****/{exe_id}.xls'
posted @ 2021-08-23 14:43  wyz_1  阅读(156)  评论(0编辑  收藏  举报