前端自己导出Excel

1、导出当前页面,这是最简单的,只是导出当前页面的数据。

exportData(tableid, name) {
        let table;
        let uri = 'data:application/vnd.ms-excel;base64,',
          template = '<html><head><meta charset="UTF-8"></head><body><table  border="1">{table}</table></body></html>',
          base64 = function (
            s) {
            return window.btoa(unescape(encodeURIComponent(s)))
          },
          format = function (s, c) {
            return s.replace(/{(\w+)}/g, function (m, p) {
              return c[p];
            })
          };

        table = document.getElementById(tableid)
        let ctx = {
          worksheet: name || 'Worksheet',
          table: table.innerHTML
        };
        window.location.href = uri + base64(format(template, ctx))
      },

2、导出有分页的数据

exportData2() {
      let table;//把所有要导出的数据全部封装成tbody内的数据,然后导出
      let uri = "data:application/vnd.ms-excel;base64,",
        template =
          '<html><head><meta charset="UTF-8"></head><body><table  border="1">{table}</table></body></html>',
        base64 = function(s) {
          return window.btoa(unescape(encodeURIComponent(s)));
        },
        format = function(s, c) {
          return s.replace(/{(\w+)}/g, function(m, p) {
            return c[p];
          });
        };
      let ctx = {
        worksheet:"导出",
        table: table
      };
      window.location.href = uri + base64(format(template, ctx));
    },

当前导出的话,我目前在我司的项目上应用,导出超过700条,数据就会在base64处转化失败,建议导出如果超过700条时,可以进行二次封装,每次只是500条,可以存两个变量,一个是{table},一个是base64转化后的数据,然后组合起来,直至数据获取完毕,然后再导出

转载于:https://www.cnblogs.com/mxyr/p/10824403.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值