视图
import xlwt
class ExportExcelEquip(View):
def get(self,request):
now = datetime.now()
time = datetime.strftime(now,'%Y%m%d%H%M%S')
filename = time+'.xls'
# 设置HTTPResponse的类型
reposnse = HttpResponse(content_type='application/vnd.ms-excel')
# 创建一个文件对象
reposnse['Content-Disposition'] = 'attachment;filename='+filename
# 创建一个sheet对象
wb = xlwt.Workbook(encoding='utf-8')
sheet = wb.add_sheet('order-sheet')
# 写入文件标题
sheet.write(0, 0, '设备')
sheet.write(0, 1, '客户端名')
sheet.write(0, 2, '设备编号 ')
sheet.write(0, 3, '类型')
sheet.write(0, 4, 'CCID')
sheet.write(0, 5, '经度')
sheet.write(0, 6, '纬度')
sheet.write(0, 7, '地址')
sheet.write(0, 8, '状态')
sheet.write(0, 9, '注册时间')
data_row = 1
for equip in EquipmentInfo.objects.all().order_by('add_time'):
client = ClientInfo.objects.get(id=equip.client_name_id)
type = EquipmentType.objects.get(id=equip.type_id)
sheet.write(data_row, 0, equip.name)
sheet.write(data_row, 1, client.name)
sheet.write(data_row, 2, equip.version)
sheet.write(data_row, 3, type.type_name)
sheet.write(data_row, 4, equip.ccid)
sheet.write(data_row, 5, equip.longitude)
sheet.write(data_row, 6, equip.latitude)
sheet.write(data_row, 7, equip.address)
sheet.write(data_row, 8, equip.state)
sheet.write(data_row, 9, str(equip.add_time))
data_row = data_row + 1
# 写出到IO
output = BytesIO()
wb.save(output)
output.seek(0)
reposnse.write(output.getvalue())
#logger.info('用户:%s 导出了系统用户excel表' % (request.user.username))
return reposnse
路由
path('exportequipdata/', ExportExcelEquip.as_view(), name='export_equip'),
前端
<a href="{% url 'equipment:export_equip' %}"><button class="layui-btn" type="button">导出excel</button></a>