vue使用a标签下载多页excel
时间: 2024-05-02 22:21:03 浏览: 108
可以使用js-xlsx库来实现多页Excel文件的生成和下载。具体步骤如下:
1. 安装js-xlsx库。
```bash
npm install xlsx
```
2. 在Vue组件中引入js-xlsx库。
```javascript
import XLSX from 'xlsx'
```
3. 定义一个方法,用于生成Excel文件。
```javascript
export default {
methods: {
downloadExcel() {
// 创建Workbook对象
const wb = XLSX.utils.book_new()
// 定义表格数据
const sheet1Data = [
['姓名', '年龄', '性别'],
['张三', 20, '男'],
['李四', 22, '女'],
['王五', 25, '男']
]
const sheet2Data = [
['学科', '成绩'],
['语文', 90],
['数学', 85],
['英语', 95]
]
// 创建工作表对象
const sheet1 = XLSX.utils.aoa_to_sheet(sheet1Data)
const sheet2 = XLSX.utils.aoa_to_sheet(sheet2Data)
// 将工作表添加到Workbook对象中
XLSX.utils.book_append_sheet(wb, sheet1, '表格1')
XLSX.utils.book_append_sheet(wb, sheet2, '表格2')
// 将Workbook对象转为二进制数据
const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' })
// 创建Blob对象
const blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' })
// 创建a标签并设置下载属性
const a = document.createElement('a')
a.href = URL.createObjectURL(blob)
a.download = '多页Excel文件.xlsx'
// 模拟点击a标签进行下载
a.click()
// 释放URL对象
URL.revokeObjectURL(a.href)
}
}
}
// 将字符串转为ArrayBuffer对象
function s2ab(s) {
const buf = new ArrayBuffer(s.length)
const view = new Uint8Array(buf)
for (let i = 0; i < s.length; i++) {
view[i] = s.charCodeAt(i) & 0xff
}
return buf
}
```
4. 在模板中添加一个按钮,用于触发下载Excel文件的方法。
```html
<template>
<div>
<button @click="downloadExcel">下载Excel文件</button>
</div>
</template>
```
阅读全文