先说使用的依赖包
- 安装插件,这里是两个。
npm install --save xlsx file-saver
- 引入依赖
import FileSaver from 'file-saver'
import XLSX from 'xlsx'
- 导出方法
exportExcel () {
var xlsxParam = { raw: true }
var wb = XLSX.utils.table_to_book(document.querySelector('#exportTab'), xlsxParam)
var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
try {
FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), '文件名字.xlsx')
} catch (e) {
if (typeof console !== 'undefined') {
console.log(e, wbout)
}
}
return wbout
}
修改echarts配置
- 找到toolbox进行修改
toolbox: {
feature: {
dataView: {
show: true,
readOnly: false,
lang: ['数据视图', '关闭', '导出Excel'],
optionToContent(opt) {
const series = opt.series
const axisData = opt.yAxis[0].data
let tdHeads = '<td style="padding: 0 10px">层数</td>'
let tdBodys = ''
series.forEach(function (item) {
tdHeads += '<td style="padding: 0 10px">' + item.name + '</td>'
})
let table = '<table id="exportTab" border="1" style="margin-left:20px;border-collapse:collapse;font-size:14px;text-align:center"><tbody><tr>' + tdHeads + ' </tr>'
for (let i = 0, l = axisData.length; i < l; i++) {
for (let j = 0; j < series.length; j++) {
tdBodys += '<td>' + (series[j].data[i].value !== null ? series[j].data[i].value.toFixed(4) : '-') + '</td>'
}
table += '<tr><td style="padding: 0 10px">' + (i + 1) + '层</td>' + tdBodys + '</tr>'
tdBodys = ''
}
table += '</tbody></table>'
return table
},
contentToOption(opt) {
that.exportExcel()
}
},
restore: { show: true },
saveAsImage: { show: true }
}
}
- 注意this指向,上述的that我是放在options外面
还有一个就是如果是多图表,都可以做导出这里写死id就不可以了,所以做以下修改
- 修改导出方法
exportExcel (el) {
var xlsxParam = { raw: true }
var wb = XLSX.utils.table_to_book(document.querySelector(`${el}`), xlsxParam)
var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
try {
FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), '文件名字.xlsx')
} catch (e) {
if (typeof console !== 'undefined') {
console.log(e, wbout)
}
}
return wbout
}
- 重置导出方法做传参
contentToOption(opt) {
that.exportExcel(opt.children[0].getAttribute('id'))
}