前端自定义导出excel内容(xlsx插件用法)

月下脆竹書閣 2024-08-07 14:33:02 阅读 80

前端自定义导出excel内容(xlsx用法)

1.下载安装xlsx插件2.新建xlsx.js文件,放在utils文件夹下3.页面中使用

1.下载安装xlsx插件

<code>npm install xlsx -D

2.新建xlsx.js文件,放在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);//第三个参数是sheet名称

// 创建二进制对象写入转换好的字节流

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";

//自定义导出

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, "xxx.xlsx");

}

文章出处



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。