Vue 导出 excel
// 导入插件
- npm install --save xlsx file-saver
// 代码部分
<template>
<div>
<el-button @click="outExcel">导出excel表格文件</el-button>
<el-table :data="comeData"
id="userInfo">
<el-table-column type="index"
label="#">
</el-table-column>
<el-table-column prop="name"
label="姓名">
</el-table-column>
<el-table-column prop="password"
label="密码">
</el-table-column>
</el-table>
</div>
</template>
<script>
// 导入 导出功能
import FileSaver from 'file-saver'
import XLSX from 'xlsx'
export default {
data () {
return {
comeData: []
}
},
methods: {
async getComeData () {
const { data: res } = await this.$http.post('/user/selectAll')
this.comeData = res
console.log(res)
},
// 导出
outExcel () {
var wb = XLSX.utils.table_to_book(document.querySelector('#userInfo'))
/* 获取二进制字符串作为输出 */
var wbout = XLSX.write(wb, {
bookType: 'xlsx',
bookSST: true,
type: 'array'
})
try {
FileSaver.saveAs(
// Blob 对象表示一个不可变、原始数据的类文件对象。
// Blob 表示的不一定是JavaScript原生格式的数据。
// File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。
// 返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成。
new Blob([wbout], { type: 'application/octet-stream' }),
// 设置导出文件名称
'sheetjs.xlsx'
)
} catch (e) {
if (typeof console !== 'undefined') console.log(e, wbout)
}
return wbout
}
},
created () {
this.getComeData()
}
}
</script>
<style lang="less" scoped>
</style>