使用js-xlsx插件和FileSaver插件可以很容易的实现前端导出表格到Excel功能
GitHub地址
https://github.com/SheetJS/js-xlsx
https://github.com/eligrey/FileSaver.js
开发中遇见一个问题,使用js-xlsx插件将table转成workbook时,会默认把内容是数字的字符串当做数字处理
比如 一个td的值是00001,导出Excel后会变成1,js-xlsx插件会把这个字符串转成数字进行输出。
查看了js-xlsx插件的文档后发现可以通过raw:true属性控制把内容当做字符串进行输出,这样输出的结果就是00001了。
let table = document.querySelector("#mytable");
let wb = XLSX.utils.table_to_book(table,{raw:true});
/* get binary string as output */
let wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array",
});
try {
FileSaver.saveAs(
new Blob([wbout], { type: "application/octet-stream" }),
excName+".xlsx"
);
} catch (e) {
if (typeof console !== "undefined") console.log(e, wbout);
}
return wbout;