import * as XLSX from 'xlsx';
|
import FileSaver from 'file-saver';
|
|
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` //修改名字
|
);
|
//这里可以放入你的回调函数
|
alert('开始下载');
|
} catch (e) {
|
if (typeof console !== 'undefined') console.log(e, table_write);
|
}
|
return table_write;
|
}
|
|
export { conversionFromTable };
|