1、Excel.js
export function createXlsFile (jsonData) {
let table = ''
// 生成表头
let row = ''
for (let i = 0; i < jsonData.th.length; i++) {
row += '' + jsonData.th[i] + ' | '
}
table += row + '
'
let tds = jsonData.tds
for (let i = 0, len = tds.length; i < len; i++) {
let td = ''
for (let j = 0, jLen = tds[i].length; j < jLen; j++) {
td += '' + tds[i][j] + ' | '
}
td += '
'
table += td
}
let excelFile = ""
excelFile += ''
excelFile += ''
excelFile += ''
excelFile += ''
excelFile += ''
excelFile += ''
excelFile += table
excelFile += ''
excelFile += ''
let uri = 'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8,base64,' + encodeURIComponent(excelFile)
let link = document.createElement('a')
link.href = uri
link.style = 'visibility:hidden'
link.download = jsonData.fileName + '.xls'
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
}
2、vue 组件引入使用
import { createXlsFile } from '../../utils/Excel'
// 导出
download () {
// console.log(this.newTable)
let filterVal = ['alarmtype', 'passtime', 'name', 'phone', 'sfzh', 'location', 'ishandle', 'isfeedback']
let data = this.formatJson(filterVal, this.newTable)
// console.log(data)
createXlsFile({
fileName: '所有报警',
th: ['报警类型', '报警时间', '联系人', '联系电话', '身份证', '地址', '状态', '反馈'], // 表头
tds: data
})
},
formatJson (filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => {
if (j === 'alarmtype') {
return this.alarmTypeValue(v)
} else if (j === 'ishandle') {
if (v[j] === 1) {
return '已处理'
} else {
return '未处理'
}
} else if (j === 'isfeedback') {
if (v[j] === 1) {
return '已反馈'
} else {
return '未反馈'
}
} else {
return v[j]
}
}))
},