这是一个用来导出excel数据的接口,在postman里返回值为一堆乱码,那些乱码save response->save as file自动变为.xls文件.
如果日期在数据库内直接输入,则不会导出日期(空白值),如果由接口创建则可以.
@api_view(['POST'])
@csrf_exempt
def export(request):
'''
导出
:param request:
:return:
'''
# 指定数据类型
response = HttpResponse(content_type='application/ms-excel')
# response = HttpResponse(content_type='text/csv')
# 设置文件名称
response['Content-Disposition'] = 'attachment; filename="constant_info.xls"'
# 创建工作簿
wb = xlwt.Workbook(encoding='utf-8')
# 创建表
ws = wb.add_sheet('Menu')
row_num = 0
font_style = xlwt.XFStyle()
# 二进制
font_style.font.bold = True
# 表头内容
columns = ['constant_info_id', 'constant_info', 'constant_info_creation_time']
# 写进表头内容
for col_num in range(len(columns)):
ws.write(row_num, col_num, columns[col_num], font_style)
# Sheet body, remaining rows
font_style = xlwt.XFStyle()
# 获取数据库数据
rows = constant_info.objects.values_list('constant_info_id', 'constant_info','constant_info_creation_time')
# 遍历提取出来的内容
for row in rows:
print(rows)
row_num += 1
# 逐行写入Excel
for col_num in range(len(row)):
ws.write(row_num, col_num, row[col_num], font_style)
print(row_num, col_num, row[col_num])
wb.save(response)
return response