django-通过查询数据库导出excel数据表格

 

 

 

 后端代码如下:

 1 def export_excel(request):
 2     """导出记录的视图"""
 3     device_li = DeviceInfo.objects.order_by("-update_data")  #查询库里所有数据
 4 
 5     # 设置HTTPResponse的类型
 6     response = HttpResponse(content_type='application/vnd.ms-excel')
 7     response['Content-Disposition'] = 'attachment;filename=device_data.xls'
 8     """导出excel表"""
 9     if device_li:
10         # 创建工作簿
11         ws = xlwt.Workbook(encoding='utf-8')
12         # 添加第一页数据表
13         w = ws.add_sheet('sheet1')  # 新建sheet(sheet的名称为"sheet1")
14         # 写入表头
15         w.write(0, 0, u'所属中心')
16         w.write(0, 1, u'设备名称')
17         w.write(0, 2, u'设备系统')
18         w.write(0, 3, u'厂商')
19         w.write(0, 4, u'系统版本')
20         w.write(0, 5, u'资产编号')
21         w.write(0, 6, u'手机号码')
22         w.write(0, 7, u'出库领取人')
23         w.write(0, 8, u'使用人')
24         w.write(0, 9, u'创建人')
25         # 写入数据
26         excel_row = 1
27         for obj in device_li:
28             center_name = obj.center_name
29             device_name = obj.device_name
30             device_system = obj.device_system
31             device_factory = obj.device_factory
32             device_system_version = obj.device_system_version
33             device_asset_number = obj.device_asset_num
34             device_phone_number = obj.device_phone_num
35             device_user = obj.device_user
36             device_recipient = obj.device_recipient
37             creator = obj.creator
38             # created_date = obj.create_date
39             # modified_date = obj.update_data
40             w.write(excel_row, 0, center_name)
41             w.write(excel_row, 1, device_name)
42             w.write(excel_row, 2, device_system)
43             w.write(excel_row, 3, device_factory)
44             w.write(excel_row, 4, device_system_version)
45             w.write(excel_row, 5, device_asset_number)
46             w.write(excel_row, 6, device_phone_number)
47             w.write(excel_row, 7, device_recipient)
48             w.write(excel_row, 8, device_user)
49             w.write(excel_row, 9, creator)
50             excel_row += 1
51         # 写出到IO
52         output = BytesIO()
53         ws.save(output)
54         # 重新定位到开始
55         output.seek(0)
56         response.write(output.getvalue())
57     return response

 

posted on 2021-09-25 18:26  cherry_ning  阅读(932)  评论(0)    收藏  举报

导航