一、存储到本地+发送给前端+替换属性(字段名称)
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)
三、有一点提示,如果测试出现中文乱码问题,前端可以解决,不用怕~