vue使用xlsx插件下载excel文件
1、安装xlsx插件
cnpm install xlsx
2、新建xlsx.js文件,添加以下代码,放在plugins或utils插件文件夹下
// 下载excel功能 import XLSX from 'xlsx' /** * @param dataList 表格数据内容 array * @param fileName 文件标题。必须以 .xlsx结尾 */ export const downloadXlsx = (dataList, fileName) => { const stringToBuff = str => { let buf = new ArrayBuffer(str.length) let view = new Uint8Array(buf) for (let i = 0; i !== str.length; ++i) { view[i] = str.charCodeAt(i) & 0xff } return buf }; // 创建表格 let workbook = XLSX.utils.book_new(); let worksheet = XLSX.utils.aoa_to_sheet(dataList); XLSX.utils.book_append_sheet(workbook, worksheet, 'sheet1'); // 创建二进制对象写入转换好的字节流 let xlsxBlob = new Blob( [ stringToBuff( XLSX.write(workbook, { bookType: 'xlsx', bookSST: false, type: 'binary' }) ) ], { type: '' } ); const a = document.createElement('a'); // 利用URL.createObjectURL()方法为a元素生成blob URL a.href = URL.createObjectURL(xlsxBlob) ;// 创建对象超链接 a.download = fileName a.click() }
3、在页面中引入使用
import { downloadXlsx } from "/utils/xlsx";
4、导出对应逻辑处理
handelExportEvent() { //this.tableData表格数据 if (!this.tableData || this.tableData.length == 0) { this.$message.error("当前没有需要导出的数据,请重新搜索后再打印!"); return; } let datalist = []; //导出表格表头 datalist.push([ "病人姓名", "证件号", ]); this.tableData.forEach((item, index) => { datalist.push([ item.patientName, item.idcardNo, ]); }); //导出插件使用 downloadXlsx(datalist, "机构费用汇总.xlsx"); },