FileSaver.js: 是一款基于 HTML5 完成文件保存的插件,它可以帮我们直接从网页中导出多种格式文件。 同时对于那些本身不支持 HTML5 W3C saveAs() FileSaver 接口的浏览器,FileSaver.js 也提供了支持。 使用 FileSaver.js 可以让 Web 应用完美的生成文件,或者保存那些不应该发送到外部服务器的敏感信息。是一种简单易用的浏览器端文件保存方案。
js-xlsx :由SheetJS出品的js-xlsx是一款非常方便的只需要纯JS即可读取和导出excel的工具库,功能强大,支持格式众多,支持xls、xlsx、ods(一种OpenOffice专有表格文件格式)等十几种格式。
Json2excel:根据json数据生成excel表格
在需要导出excel的组件中引入这三个文件
import FileSaver from "file-saver";
import XLSX from "xlsx";
import Json2excel from "custom-json2excel";
exportExcel() {
var wopts = {
bookType: "xlsx",
bookSST: false,
type: "binary"
};
var workBook = {
SheetNames: ["Sheet1"],
Sheets: {},
Props: {}
};
workBook.Sheets["Sheet1"] = XLSX.utils.json_to_sheet(
this.presentTableData
);
FileSaver.saveAs(
new Blob([this.changeData(XLSX.write(workBook, wopts))], {
type: "application/octet-stream"
}),
"站点列表.xlsx"
);
var tableData = this.presentTableData;
const json2excel = new Json2excel({ tableData });
json2excel.generate();
},
changeData(s) {
//如果存在ArrayBuffer对象(es6) 最好采用该对象
if (typeof ArrayBuffer !== "undefined") {
//1、创建一个字节长度为s.length的内存区域
var buf = new ArrayBuffer(s.length);
//2、创建一个指向buf的Unit8视图,开始于字节0,直到缓冲区的末尾
var view = new Uint8Array(buf);
//3、返回指定位置的字符的Unicode编码
for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff;
return buf;
} else {
var buf = new Array(s.length);
for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xff;
return buf;
}
},