import { saveAs } from 'file-saver'
import XLSX from 'xlsx'
export function exportElementTable(el, filename) {const clonedEl = el.cloneNode(true)const fixedElements = clonedEl.querySelectorAll('.el-table__fixed, .el-table__fixed-right, .el-table__fixed-left')if (fixedElements && fixedElements.length > 0) {for (let i = 0; i < fixedElements.length; i++) {const fixedEl = fixedElements[i]if (fixedEl.parentNode) {fixedEl.parentNode.removeChild(fixedEl)}}}const headerTable = clonedEl.querySelector('.el-table__header-wrapper table')const bodyTable = clonedEl.querySelector('.el-table__body-wrapper table')const mergedTable = document.createElement('table')if (headerTable && headerTable.className) {mergedTable.setAttribute('class', headerTable.className)}if (headerTable) {const thead = document.createElement('thead')const headerRows = headerTable.getElementsByTagName('tr')if (headerRows && headerRows.length > 0) {for (let i = 0; i < headerRows.length; i++) {const tr = headerRows[i]thead.appendChild(tr.cloneNode(true))}}mergedTable.appendChild(thead)}if (bodyTable) {const tbody = document.createElement('tbody')const bodyRows = bodyTable.getElementsByTagName('tr')if (bodyRows && bodyRows.length > 0) {for (let i = 0; i < bodyRows.length; i++) {const tr = bodyRows[i]tbody.appendChild(tr.cloneNode(true))}}mergedTable.appendChild(tbody)}const allCells = mergedTable.getElementsByTagName('th')const dataCells = mergedTable.getElementsByTagName('td')const combinedCells = [].concat(Array.from(allCells), Array.from(dataCells))for (let i = 0; i < combinedCells.length; i++) {const cell = combinedCells[i]if (cell) {const rowSpan = cell.getAttribute('data-rowspan') || 1const colSpan = cell.getAttribute('data-colspan') || 1if (rowSpan > 1) {cell.setAttribute('rowspan', rowSpan)}if (colSpan > 1) {cell.setAttribute('colspan', colSpan)}}}const workbook = XLSX.utils.table_to_book(mergedTable, {raw: true,display: true, cellDates: true, })const wbout = XLSX.write(workbook, {bookType: 'xlsx',bookSST: true,type: 'array',})saveAs(new Blob([wbout], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }),`${filename}.xlsx`)
}
