核心插件
file-saver
xlsx
核心方法
export function SaveExcel(exportTableJson, fileName) {
const exportHtml = TableJsonToDom(exportTableJson)
const workbook = XLSX.utils.table_to_book(
exportHtml, {
raw: true
})
const wbout = XLSX.write(workbook, {
bookType: 'xlsx',
bookSST: true,
type: 'array'
})
saveAs(
new Blob([wbout], {
type: 'application/octet-stream'
}),
`${fileName}.xlsx`
)
}
export function TableJsonToDom(tableJson) {
var objE = document.createElement('div')
objE.innerHTML = tableJson
return objE
}
demo
import { SaveExcel } from '@/components/xls/js/CustomExcel.js'
methods: {
hanldeExportTable() {
const tableHeader = `
<thead>
<tr>
<th rowspan="2">序号</th>
<th rowspan="2">单位名称</th>
<th rowspan="2">互联网对讲机数量</th>
<th rowspan="2">消防站对讲机数量</th>
<th colspan="4">专职队</th>
<th colspan="4">社区微型站</th>
<th colspan="4">重点单位</th>
</tr>
<tr>
<th>配备站点</th>
<th>分布数量</th>
<th>配备率</th>
<th>对讲机数量</th>
<th>配备站点</th>
<th>分布数量</th>
<th>配备率</th>
<th>对讲机数量</th>
<th>配备站点</th>
<th>分布数量</th>
<th>配备率</th>
<th>对讲机数量</th>
</tr>
</thead>
`
let tableBody = ''
this.list.forEach((item, index) => {
const tr = `
<tr>
<td>${index + 1}</td>
<td>${item.unitName}</td>
<td>${item.talkNum}</td>
<td>${item.armyTalkNum}</td>
<td>${item.fullTeamNum}</td>
<td>${item.fullTeamInstallNum}</td>
<td>${item.fullRate}</td>
<td>${item.fullTeamTalkNum}</td>
<td>${item.commStationNum}</td>
<td>${item.commStationInstallNum}</td>
<td>${item.commRate}</td>
<td>${item.commStationTalkNum}</td>
<td>${item.keyStationNum}</td>
<td>${item.keyStationInstallNum}</td>
<td>${item.keyRate}</td>
<td>${item.keyStationTalkNum}</td>
</tr>
`
tableBody = tableBody + tr
})
const tableJson = `
<table>
${tableHeader}
<tbody>
${tableBody}
</tbody>
</table>
`
SaveExcel(tableJson, '单位设备情况导出')
}
}