当使用Vue和Element-UI组件Table表格实现数据展示功能时,有时候我们需要将表格数据导出为Excel文件。这样可以方便用户将数据保存到本地或者进行进一步的处理。本篇博文将会梳理如何使用Vue和Element-UI实现Table表格数据导出Excel文件的功能。
首先,我们需要在Vue项目中安装element-ui和xlsx两个依赖包。可以使用npm或者yarn进行安装:
复制npm install element-ui xlsx --save
安装完成后,我们需要在main.js文件中引入Element-UI和xlsx:
复制import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import XLSX from 'xlsx'
Vue.use(ElementUI)
Vue.prototype.$XLSX = XLSX
接下来,我们需要准备一个Table表格,并且将数据绑定到Table组件的data属性上。例如:
复制<template>
<div>
<el-table :data="tableData">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
<el-table-column prop="gender" label="性别"></el-table-column>
</el-table>
<el-button type="primary" @click="exportExcel">导出Excel</el-button>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [
{ name: '张三', age: 18, gender: '男' },
{ name: '李四', age: 20, gender: '女' },
{ name: '王五', age: 22, gender: '男' }
]
}
},
methods: {
exportExcel() {
const data = this.formatData(this.tableData) // 将数据格式化为xlsx可以识别的格式
const wb = this.$XLSX.utils.book_new()
const ws = this.$XLSX.utils.json_to_sheet(data)
this.$XLSX.utils.book_append_sheet(wb, ws, 'Sheet1')
this.$XLSX.writeFile(wb, 'tableData.xlsx')
},
formatData(data) {
// 格式化表格数据,将对象数组转换为数组对象
return data.map(item => {
const { name, age, gender } = item
return { 姓名: name, 年龄: age, 性别: gender }
})
}
}
}
</script>
在上面的代码中,我们首先准备了一个Table组件,并绑定了一个名为tableData
的数组作为表格的数据源。然后我们在方法exportExcel
中实现了导出Excel文件的逻辑。首先,我们调用formatData
方法将表格数据格式化为xlsx可以识别的格式。然后,我们创建一个Workbook对象,并在其中添加一个Worksheet(工作表)。最后,我们使用writeFile
方法将Workbook对象写入到文件中。
在方法formatData
中,我们将表格数据的属性名转换为中文,以便在导出的Excel文件中显示中文列名。
最后,我们在页面中添加一个按钮,并绑定exportExcel
方法,当用户点击按钮时,即可将表格数据导出为Excel文件。
这样,我们就完成了使用Vue和Element-UI组件Table表格导出Excel文件的功能。希望本篇博文对你有所帮助!