el-table导出单张excel(保留样式)

el-table导出单张excel(保留样式)

注:该项目是在html页面中引入vue.js 来使用vue的

表格特点:
(1)表格带有合并单元格
(2)表格带有固定列

导出成excel时遇到的问题:
(1)带有固定列的表格,导出时会出现重复的问题
原因:使用el-table的fixed属性来固定某一列,其原理是创建两个tabledom,通过一个隐藏一个显示来实现交互效果。当导出整个el-table 就会将两个div内的table都导出,导致数据重复。审查元素如下:
在这里插入图片描述
解决方法:判断要导出的节点中是否有fixed的表格,如果有,转换excel时先将该dom移除,然后append回去。

表格:https://blog.csdn.net/qq_28691187/article/details/111476394
导出excel代码:

 	// 导出excel
     exportToExcel() {
         this.$nextTick(function () {
             var str = "";
             var wb = "";
             var fix = document.querySelector('.el-table__fixed');
             if (fix) { //判断要导出的节点中是否有fixed的表格,如果有,转换excel时先将该dom移除,然后append回去
                 // console.log("存在固定列")
                 wb = document.querySelector('#out_table').removeChild(fix);
                 document.querySelector('#out_table').appendChild(fix);
             } else {
                 // console.log("不存在固定列")
                 wb = document.querySelector('#out_table');
             }
             str = $(wb).html();
             if (wb != "") {
                 // table{vnd.ms-excel.numberformat:@;} 文本形式
                 var html = "<html><head><meta charset='utf-8' /></head><body>" + str + "</body></html>";
                 var now = new Date();
                 var date = now.getFullYear() + '-' + (now.getMonth() + 1) + '-' + now.getDate() + ' ' + now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds();
                 var fileName = $(".title").html();
                 var exportFileName = fileName + date + ' ' + ".xls";//自定义导出excel表名称
                 var blob = new Blob([html], { type: "application/vnd.ms-excel" });
                 saveAs(blob, exportFileName);
             } else {
                 alert("未找到表格,导出失败!")
             }
         });
     }
在Django中使用el-table导出Excel可以通过以下步骤实现。 首先,在views.py中创建一个视图函数来处理导出Excel的请求。在该函数中,我们需要引入必要的模块和库来生成Excel文件。可以使用第三方库xlwt来实现这个功能。 接下来,我们需要获取需要导出的数据,并将其转换为Excel格式。可以使用Django的查询语法来获取数据,并使用xlwt库将数据写入Excel文件。需要注意的是,el-table的列名和数据字段应该相对应。 在视图函数中,首先需要设置HttpResponse的Content-Type为Excel格式,并设置Content-Disposition为attachment,以便浏览器将其识别为可下载的文件。然后,创建一个Workbook对象,并在其中创建一个Worksheet对象。 接着,我们将el-table的列名写入Excel文件的第一行。使用xlwt的write方法,可以将数据按照el-table定义的字段顺序写入Excel文件的每一行。 最后,将Workbook对象保存为一个临时文件,并将其通过HttpResponse返回给前端浏览器。 在前端部分,我们可以使用axios来发送一个POST请求来触发导出Excel的操作。在请求中,我们需要指定导出Excel的URL,并为请求头设置相应的参数,以便服务器正确识别请求。 最后,需要通过浏览器的下载功能来下载生成的Excel文件。 总结一下,要在Django中使用el-table导出Excel,需要在后端编写一个视图函数来处理导出请求,并在前端发送一个POST请求来触发导出操作。在后端视图函数中,需要调用xlwt库来生成Excel文件并将其返回给前端
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值