import * as XLSX from 'xlsx'; import FileSaver from 'file-saver'; import { ElMessage } from 'element-plus'; function conversionFromTable(elementId, title) { // 获取表格元素 let list = document.getElementById(elementId); let tables = list.cloneNode(true); //克隆此元素,否则更改数据时会影响到原表格 //如果表格中含有switch开关,放入以下代码,可转换状态会在Excel中显示,否则转换出来为空,不会在Excel中显示 // const rows = tables.getElementsByTagName('tr'); // for (let i = 1; i < rows.length; i++) { // // 从1开始,以跳过表头 // const cells = rows[i].getElementsByTagName('td'); // for (let j = 0; j < cells.length; j++) { // const cell = cells[j]; // // 找到开关元素并获取状态 // const switchElement = cell.querySelector('input[type="checkbox"]'); // if (switchElement) { // // 根据开关状态设置单元格内容 // cells[j].innerText = switchElement.checked ? '关闭' : '开启'; // } // } // } // console.log(tables); //------放入以上拿到switch状态,以及下拉框代码,如果没克隆元素则会影响到原表格-------------// // 导出表格 var xlsxParam = { raw: true }; // 导出的内容只做解析,不进行格式转换 let table_book = XLSX.utils.table_to_book(tables, xlsxParam); const table_write = XLSX.write(table_book, { bookType: 'xlsx', bookSST: true, type: 'array' }); try { FileSaver.saveAs( new Blob([table_write], { type: 'application/octet-stream' }), `${title}.xlsx` //修改名字 ); //这里可以放入你的回调函数 ElMessage.success('开始下载'); } catch (e) { if (typeof console !== 'undefined') console.log(e, table_write); } return table_write; } export { conversionFromTable };