给前端返回excel表格
返回excel表格函数如下
使用如下方法就直接将excel表格生成返回给前端了
#encoding=utf-8 from io import BytesIO import xlsxwriter import datetime # 定义时间标志变量 import xlwt as xlwt from django.http import HttpResponse #result是数据 def export_excel(result): sheet_time = datetime.datetime.now() sheet_mark = sheet_time.strftime('%Y-%m-%d') book_mark = sheet_time.strftime('%Y%m%d') # 查询数据结果和字段名字 赋值给两个变量 result = result #查询的数据信息 fields = ['时间','用户','区域','类型','信息'] # 查询到的标题描述信息 fields_name = ['time','user','area','type','info'] # 查询到的标题描述信息 response = HttpResponse(content_type='application/vnd.ms-excel') # 指定返回为excel文件 response['Content-Disposition'] = 'attachment;filename=export_agencycustomer.xls' # 指定返回文件名 wb = xlwt.Workbook(encoding='utf-8') # 设定编码类型为utf8 sheet = wb.add_sheet(sheet_mark) # excel里添加类别 for field in range(0,len(fields)): sheet.write(0,field,fields[field]) #数据坐标0,0 ~ row,col row取决于:result的行数;col取决于fields的总数 for row in range(1,len(result)+1): for col in range(0,len(fields_name)): sheet.write(row,col,u'%s' % result[row-1][fields_name[col]]) output = BytesIO() wb.save(output) output.seek(0) response.write(output.getvalue()) return response
调用这个方法的视图
class ExportLogView(GenericAPIView): serializer_class = OperationSerialize queryset = Operationlog.objects.all() filter_backends = (DjangoFilterBackend,) filter_class = OperationFilter def get(self, request): queryset = self.filter_queryset(self.get_queryset()) serializer = self.serializer_class(queryset, many=True) return export_excel(serializer.data)
浙公网安备 33010602011771号