前端实现excel导出下载思路
利用csv
此方法需要先将json转成csv字符串;
- 优点:快
- 缺点:不能设置格式
// str 是json转成的csv字符串,这个可以自己转,也可以找网上现成的包
//encodeURIComponent解决中文乱码, \ufeff是 ""
let uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);
//通过创建a标签实现
let link = document.createElement("a");
link.href = uri;
// 命名文件x
link.download = "xxx.xlsx";
// 点击下载
link.click();
利用Blob
此方法需要将json转成html的table格式;
- 优点:可以设置格式
- 缺点:慢
// excelHtml是json转化成的html字符串
// excelHtml格式 <table><tr><td>xx</td><td>xxx</td></tr></table>
let excelBlob = new Blob([excelHtml], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" })
// 创建一个a标签
let link = document.createElement('a');
// 利用URL.createObjectURL()方法为a元素生成blob URL
link.href = URL.createObjectURL(excelBlob);
// 命名文件
link.download = 'xxxx.xlsx';
// 模拟点击
link.click()