personalExtension.js 1.8 KB

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