阅读背景:

django+angular导出excel报表

来源:互联网 
Django 1.urls urlpatterns = [ path('excel-download/',QuestionnaireSurveyResultViewSet.as_view({ 'post': 'questionnaireSurvey_Result_excel'}))] 2.views import xlwt as xlwt from rest_framework.response import Response from rest_framework import viewsets class QuestionnaireSurveyResultViewSet(viewsets.ModelViewSet): ''' 量表管理页面中的结果查询 导出Excel ''' def questionnaireSurvey_Result_excel(self, request): try: # 查询条件 query_param = request.data datas = query_param.get('datas') fee_pool = query_param.get('fee_pool') excel = xlwt.Workbook() style = xlwt.XFStyle() datastyle = xlwt.XFStyle() datastyle.num_format_str = 'yyyy/m/d' al = xlwt.Alignment() al.horz = 0x02 al.vert = 0x01 style.alignment = al datastyle.alignment = al if fee_pool == 'undefined' or fee_pool == '' or fee_pool == 'entrust_plan': sheet = excel.add_sheet(u'量表结果导出', cell_overwrite_ok=True) # 设置列宽,一个中文等于两个英文等于两个字符,11为字符数,256为衡量单位 sheet.col(0).width = 24 * 256 sheet.col(1).width = 24 * 256 sheet.col(2).width = 24 * 256 sheet.col(3).width = 24 * 256 sheet.col(4).width = 24 * 256 sheet.col(5).width = 24 * 256 sheet.col(6).width = 24 * 256 sheet.write(0, 0, '问卷标题', style) sheet.write(0, 1, '用户名', style) sheet.write(0, 2, '姓名', style) sheet.write(0, 3, '所属部门', style) sheet.write(0, 4, '完成情况', style) sheet.write(0, 5, '分数', style) sheet.write(0, 6, '评级', style) n = 1 if fee_pool == 'entrust_plan': for data in datas: print(data) sheet.write(n, 0, data['title'], style) sheet.write(n, 1, data['username'], style) sheet.write(n, 2, data['name'], style) sheet.write(n, 3, data['user_dept'], style) sheet.write(n, 4, data['status_ans'], style) sheet.write(n, 5, data['score'], style) sheet.write(n, 6, data['level'], style) n = n + 1 if (n == 65530): break excel.save('media/file_export/questionnaireSurvey_Result_excel.xls') return Response( { 'code': 2000, 'errCode': 0, 'errMessage': '成功导出', 'data': { 'path': '/media/file_export/questionnaireSurvey_Result_excel.xls'}}) except Exception as e: print(e) return Response({ 'code': 100, 'errCode': 1, 'errMessage': '导出失败', 'data': { }}) Angular Html <button nz-button nzType="link" [disabled]=" dataSeleted.length === 0 " (click)="downLoad()" > <i nz-icon nzType="download"></i>导出选中的量表结果 </button> ts //下载选中的数据 downLoad(){ const obj = { datas: this.dataSeleted, fee_pool: 'entrust_plan' }; console.log('obj',obj); let downURl: string; this.httpServe.post('/api/system/excel-download/',obj).subscribe( (r: any) => { downURl = this.httpServe.url + r.path; console.log('downURl',downURl); // 以动态创建a标签进行下载 const a = document.createElement('a'); const nowDate = new Date().getTime(); a.href = downURl; a.download = '量表结果' + nowDate + '.xls'; document.body.appendChild(a); a.click(); document.body.removeChild(a); } ); } Django 1.urls urlpatterns = [ path('excel-downloa



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: