import Vue from 'vue'; /** * @summary 将el-table导出成Excel,并可以选择不需要导出的列 * @summary 该方法是对icore-sdk的handleDownloadExcelForElTable方法进行的扩展 * @param id 表格对象的id(必须) * @param fileName Excel文件的名称(必须) * @param set 该参数接收对象,用来修改该方法的默认参数【 * 1、noneClassName 不需要导出的列的类名(默认为:gn-TableDownloadExcel-none),el-table通过class-name设置列类名 * 2、idName 新复制的表格对象的id(默认为:gj_handleDownloadExcelForElTable_obj) * 3、tableDocument 需要打印的表格元素所在的document对象(默认为:执行当前方法的页面的document对象) * 】 */ export const PEhandleDownloadExcelForElTable = ( id, fileName, set = {} ) => { let noneClassName = set.noneClassName || 'gn-TableDownloadExcel-none'; let idName = set.idName || 'gj_handleDownloadExcelForElTable_obj'; let tableDocument = set.tableDocument || document; // 将上次生成的表格元素删除 if (document.getElementById(idName)) { document.getElementById(idName).remove(); } // 获取需要导出的表格元素 let TableObj = tableDocument.getElementById(id).cloneNode(true); // 找出不需要导出的列并将其删除 let noneArr = TableObj.getElementsByClassName(noneClassName); while (noneArr.length > 0) { noneArr[0].remove(); } TableObj.id = idName; TableObj.style.display = 'none'; // 将准备导出的表格元素添加到document中,以供handleDownloadExcelForElTable方法使用。 document.body.appendChild(TableObj); // 开始导出生成Excel let vm = new Vue(); vm.handleDownloadExcelForElTable(idName, fileName); }