html的table下载为excel格式的文件(支持大文件下载)

代码如下:

// 前端下载Excel  el:dom元素,fileName: 文件名称,style :样式
export function exportExcel(info) {
  let {el, style, fileName} = info;
  el = el || '';
  style = style || 'td{border: 0.5px solid #EBEEF5;}';
  fileName = fileName || '下载';
  let template =
    '<html><head><meta charset="UTF-8"><style type="text/css">' + style + '</style></head><body><table>{table}</table></body></html>';
  let format = function (s, c) {
    return s.replace(/{(\w+)}/g, function (m, p) {
      return c[p];
    });
  };
  let ctx = {
    worksheet: 'Worksheet',
    table: el.innerHTML
  };
  // 有中文时需要执行保证不乱码:unescape(encodeURIComponent(str)),无中文时这2个方法可以不调用
  let blob = strToBlob(unescape(encodeURIComponent(format(template, ctx))), 'application/vnd.ms-excel');
  let href = URL.createObjectURL(blob);
  var a = document.createElement('a');
  a.download = fileName;
  a.href = href;
  a.click();
  a = null;
  URL.revokeObjectURL(href);
}
// 转blob
export function strToBlob(str, type) {
  let strLength = str.length;
  let uInt8Array = new Uint8Array(strLength);
  for (let i = 0; i < strLength; ++i) {
    uInt8Array[i] = str.charCodeAt(i);
  }
  return new Blob([uInt8Array], { type: type });
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值