这是一个用来导出excel数据的接口,在postman里返回值为一堆乱码,那些乱码save response->save as file自动变为.xls文件.
    如果日期在数据库内直接输入,则不会导出日期(空白值),如果由接口创建则可以.

    1. @api_view(['POST'])
    2. @csrf_exempt
    3. def export(request):
    4. '''
    5. 导出
    6. :param request:
    7. :return:
    8. '''
    9. # 指定数据类型
    10. response = HttpResponse(content_type='application/ms-excel')
    11. # response = HttpResponse(content_type='text/csv')
    12. # 设置文件名称
    13. response['Content-Disposition'] = 'attachment; filename="constant_info.xls"'
    14. # 创建工作簿
    15. wb = xlwt.Workbook(encoding='utf-8')
    16. # 创建表
    17. ws = wb.add_sheet('Menu')
    18. row_num = 0
    19. font_style = xlwt.XFStyle()
    20. # 二进制
    21. font_style.font.bold = True
    22. # 表头内容
    23. columns = ['constant_info_id', 'constant_info', 'constant_info_creation_time']
    24. # 写进表头内容
    25. for col_num in range(len(columns)):
    26. ws.write(row_num, col_num, columns[col_num], font_style)
    27. # Sheet body, remaining rows
    28. font_style = xlwt.XFStyle()
    29. # 获取数据库数据
    30. rows = constant_info.objects.values_list('constant_info_id', 'constant_info','constant_info_creation_time')
    31. # 遍历提取出来的内容
    32. for row in rows:
    33. print(rows)
    34. row_num += 1
    35. # 逐行写入Excel
    36. for col_num in range(len(row)):
    37. ws.write(row_num, col_num, row[col_num], font_style)
    38. print(row_num, col_num, row[col_num])
    39. wb.save(response)
    40. return response