el-table 导出excel
时间: 2023-09-03 19:15:26 浏览: 155
table导出excel
el-table组件可以使用js-xlsx库来导出excel文件,以下是一个简单的示例:
1. 安装js-xlsx库
```bash
npm i xlsx -S
```
2. 引入js-xlsx库和文件下载库file-saver
```javascript
import XLSX from 'xlsx'
import FileSaver from 'file-saver'
```
3. 添加一个导出按钮
```html
<template>
<div>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
<el-table-column prop="score" label="分数"></el-table-column>
</el-table>
<el-button @click="handleDownload">导出excel</el-button>
</div>
</template>
```
4. 在methods中添加handleDownload方法
```javascript
methods: {
handleDownload() {
// 1. 将表格数据转换成二维数组
const data = this.tableData.map(item => {
return [item.name, item.age, item.score]
})
// 2. 创建一个工作簿
const ws = XLSX.utils.aoa_to_sheet([['姓名', '年龄', '分数'], ...data])
const wb = XLSX.utils.book_new()
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1')
// 3. 导出excel文件
const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'array' })
FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), 'table.xlsx')
}
}
```
说明:
1. 将表格数据转换成二维数组,第一行为表头,后面每一行为一条数据。
2. 创建一个工作簿,将二维数组转换成工作表sheet,并添加到工作簿中。
3. 使用XLSX.write将工作簿转换成二进制数据,使用FileSaver将数据保存为excel文件。
完整代码如下:
```html
<template>
<div>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
<el-table-column prop="score" label="分数"></el-table-column>
</el-table>
<el-button @click="handleDownload">导出excel</el-button>
</div>
</template>
<script>
import XLSX from 'xlsx'
import FileSaver from 'file-saver'
export default {
data() {
return {
tableData: [
{ name: '张三', age: 20, score: 80 },
{ name: '李四', age: 22, score: 90 },
{ name: '王五', age: 21, score: 85 }
]
}
},
methods: {
handleDownload() {
// 1. 将表格数据转换成二维数组
const data = this.tableData.map(item => {
return [item.name, item.age, item.score]
})
// 2. 创建一个工作簿
const ws = XLSX.utils.aoa_to_sheet([['姓名', '年龄', '分数'], ...data])
const wb = XLSX.utils.book_new()
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1')
// 3. 导出excel文件
const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'array' })
FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), 'table.xlsx')
}
}
}
</script>
```
阅读全文