前端实现excel导出下载思路

140 阅读1分钟

前端实现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()