vue+element 导出表格使用el-table的fixed属性,导致数据重复

在使用ElementUI的el-table组件时,遇到固定列导出Excel时数据重复的问题。由于ElementUI实现固定列的方式是创建两个tableDOM,导致导出时包含两份数据。为解决此问题,代码中采取了在导出前临时移除fixed DOM,导出后再append回去的方法,确保导出的Excel只包含正确数据。这个解决方案在不改变用户感知的同时,保证了导出的正确性。
摘要由CSDN通过智能技术生成

分析:我使用了el-table的fixed属性来让某一列固定,但elementui的实现方式是:创建了两个tabledom,通过一个隐藏一个显示来实现交互效果。当我导出整个el-table 就会将两个div内的table都导出,导致数据重复。

//导出
		 export2excel () {
			 /* '#export2excel '关联导出的dom节点  */
			 var fix = document.querySelector('.el-table__fixed'); // 判断要导出的节点中是否有fixed的表格,如果有,转换excel时先将该dom移除,然后append回去,
			 var wb;
			 if (fix) {
			     wb = XLSX.utils.table_to_book(document.querySelector('#mytable').removeChild(fix));
			     document.querySelector('#mytable').appendChild(fix);
			   } else {
			     wb = XLSX.utils.table_to_book(document.querySelector('#mytable'));
			   }
			 /* get binary string as output */
			 var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
			 try {
				 FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), '进度跟踪.xlsx')
			 } catch (e) { if (typeof console !== 'undefined') console.log(e, wbout) }
			 return wbout
		 },

上述操作用户没有感知,只是在转换时先移除,下一步append,其实直接导出fixed的table也可以,但是不能够兼容其他页面没有使用fixed的表格。所以最终解决方案就是这样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值