vue导出excel

这段代码展示了在Vue中实现Excel导出的功能。通过获取token,使用axios发送GET请求到指定URL,设置响应类型为arraybuffer。请求成功后,将响应数据转换为Blob对象,创建下载链接并模拟点击实现下载;请求失败则显示错误信息。

exportExcel(){
    const token = Vue.ls.get(ACCESS_TOKEN)
    axios({
      headers: { Authorization: 'Bearer ' + token, 'Access-Token': token },
      method: 'GET',
      url: '/exportExcel',
      responseType: 'arraybuffer',
    })
      .then(response => {
        let data = response.data
        var newBlob = new Blob([data], { type: 'text/plain;charset=UTF-8' })
        var anchor = document.createElement('a')
        anchor.download = '导出Excel名称' + new Date().getTime() + '.xlsx'
        anchor.href = window.URL.createObjectURL(newBlob)
        anchor.click()
      })
      .catch(async e => {
        this.$Message.error(e.toString())
      })
  }

在使用 Vue 框架进行数据导出Excel 文件时,可以通过 `Export2Excel` 工具来实现,该工具依赖于 `xlsx` 和 `file-saver` 库。以下是实现导出功能的具体方法。 ### 导出 Excel 文件的基本实现 在 Vue 项目中,可以通过以下步骤实现导出数据到 Excel 文件: 1. **安装依赖库** 首先需要安装 `xlsx` 和 `file-saver`,用于生成和保存 Excel 文件: ```bash npm install -S xlsx file-saver ``` 2. **创建 `Export2Excel.js` 文件** 在项目目录中创建 `Export2Excel.js` 文件,用于封装导出逻辑。该文件会调用 `xlsx` 和 `file-saver` 的 API 来生成 Excel 文件: ```javascript import { saveAs } from 'file-saver'; import XLSX from 'xlsx'; export function export_json_to_excel({ header, data, filename = 'exported_data', sheetName = 'sheet1', type = 'xlsx' }) { const ws = XLSX.utils.aoa_to_sheet([header, ...data]); const wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, ws, sheetName); const excelBuffer = XLSX.write(wb, { bookType: type, type: 'array' }); const blob = new Blob([excelBuffer], { type: 'application/octet-stream' }); saveAs(blob, `${filename}.${type}`); } ``` 3. **在 Vue 组件中调用导出方法** 在 Vue 组件中定义 `exportExcel` 方法,并通过 `require` 引入 `Export2Excel.js` 文件,实现数据导出: ```javascript methods: { exportExcel() { require.ensure([], () => { const { export_json_to_excel } = require('../excel/Export2Excel'); const tHeader = ['序号', '昵称', '姓名', '性别']; const filterVal = ['index', 'nickName', 'name', 'sex']; const list = this.tableData; const data = this.formatJson(filterVal, list); export_json_to_excel({ header: tHeader, data, filename: '用户信息表' }); }); }, formatJson(filterVal, jsonData) { return jsonData.map(v => filterVal.map(j => v[j])); } } ``` ### 多级表头的导出 如果需要导出包含多级表头的 Excel 文件,可以手动构造表头数据,例如: ```javascript const multiHeader = [ ['用户信息', '', '联系方式'], ['序号', '昵称', '姓名', '性别', '电话', '邮箱'] ]; ``` 然后,在 `Export2Excel.js` 中调整 `XLSX.utils.aoa_to_sheet` 方法,将多级表头传递进去: ```javascript const ws = XLSX.utils.aoa_to_sheet(multiHeader); ``` ### 导出多个 Sheet 页 若需要导出多个 Sheet 页,可以在 `Export2Excel.js` 中添加多个工作表: ```javascript const ws1 = XLSX.utils.aoa_to_sheet([header1, ...data1]); const ws2 = XLSX.utils.aoa_to_sheet([header2, ...data2]); XLSX.utils.book_append_sheet(wb, ws1, 'Sheet1'); XLSX.utils.book_append_sheet(wb, ws2, 'Sheet2'); ``` ### 数据格式化处理 在导出前,可以对数据进行格式化处理,例如将数字表示的性别转换为“男”或“女”: ```javascript list.forEach(element => { if (element.sex === 1) { element.sex = "男"; } else { element.sex = "女"; } }); ``` ### 总结 通过上述方法,可以在 Vue 项目中实现数据导出Excel 文件,支持单级表头、多级表头以及多 Sheet 页的导出需求。结合 `xlsx` 和 `file-saver` 库,可以灵活地处理各种导出场景,提升用户体验[^1]。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值