导出到.xlsx文件
安装
npm install file-saver --save
npm install xlsx --save
引入
import FileSaver from 'file-saver'
import * as XLSX from 'xlsx'
使用
handleExport() {
const header = []
this.tableInfo.forEach((item) => {
header.push(item.label)
})
const body = JSON.parse(JSON.stringify(this.allTableData))
const dataGroup = []
body.forEach((item) => {
const _row = []
const {
date,
region,
county,
machineFirstTimeResponse,
complaintHandle,
} = item
_row.push(date)
_row.push(region)
_row.push(county)
_row.push(machineFirstTimeResponse)
_row.push(complaintHandle)
dataGroup.push(_row)
})
let _data = [
header,
...dataGroup,
]
let ws = XLSX.utils.aoa_to_sheet(_data)
ws['!cols'] = [
{ wch: 20 },
{ wch: 20 },
{ wch: 20 },
{ wch: 20 },
{ wch: 20 },
]
const wb = XLSX.utils.book_new()
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1')
let wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' })
const s2ab = (s) => {
let buf = new ArrayBuffer(s.length)
let view = new Uint8Array(buf)
for (let i = 0; i < s.length; i++) {
view[i] = s.charCodeAt(i) & 0xff
}
return buf
}
const blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' })
FileSaver.saveAs(blob, '表名.xlsx')
this.$message.success('导出成功!')
},