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)
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);
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);
}
);
}