前端实现导出表格数据为xlsx

前端实现导出表格数据为xlsx

直切正题

只要就是用了a标签的属性

    exportData(){
      if(this.didTbData.length === 0) {
        this.$Message('要导出的数据为空');
        return;
      }
      const url = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(this.createExcel());
      const link = document.createElement('a');
      link.href = url;
      link.download =  `${moment().format('YYYY-MM-DD')}表格导出测试.xlsx`;
      link.click();
    },
     createExcel() {
      let that = this;
      let tbTitle = [
        {
          name: 'examNo',
          label: '体检编号',
          style: 'style="mso-number-format:\'\\@\'";',
        },
        { name: 'fullName', label: '姓名' },
        {
          name: 'genderCode',
          label: '性别',
          handle: function (a) {
            return that.sexListMap.get(a.genderCode) || '';
          },
        },
        { name: 'age', label: '年龄' },
        { name: 'telephoneNo', label: '联系电话' },
        {
          name: 'idcardTypeCode',
          label: '证件类型',
          handle: function (a) {
            return that.idcardtypeMap.get(a.idcardTypeCode) || '';
          },
        },
        {
          name: 'idcardNo',
          label: '证件号',
          style: 'style="mso-number-format:\'\\@\'";',
        },
        {
          name: 'peCompanyGroupId',
          label: '体检来源',
          handle: function (a) {
            return a.peCompanyGroupId ? '团检' : '个检';
          },
        },
        {
          name: 'criticalSourceCode',
          label: '异常结果来源',
          handle: function (a) {
            return that.criticalsourceMap.get(a.criticalSourceCode) || '';
          },
        },
        { name: 'peVipLevelCode', label: '身份类型',
          handle: function (a) {
            return that.viplevelMap.get(a.peVipLevelCode) || '';
          }, },
        { name: 'peCategoryName', label: '体检类型' },
        { name: 'orgName', label: '单位名称' },
        {
          name: 'peEncounterStatus',
          label: '体检状态',
          handle: function (a) {
            return that.encounterstatustypeMap.get(a.peEncounterStatus) || '';
          },
        },
        { name: 'createdAt', label: '重要异常结果创建日期' },
        {
          name: 'criticalLevel',
          label: '严重级别',
          handle: function (a) {
            return that.critivalLevelMap.get(a.criticalLevel) || '';
          },
        },
        { name: 'peItemName', label: '体检项目名称' },
        { name: 'criticalValue', label: '危害值结果' },
      ];

      let demo = '';
      tbTitle.map((item) => (demo += '<td>' + item.label + '</td>'));
      let title = '<tr>' + demo + '</tr>';

      let body = '';
      let line;
      this.didTbData.forEach((item) => {
        // eslint-disable-next-line no-useless-escape
        let demo1 = '';
        tbTitle.map(
          (item1) =>
            (demo1 += `<td ${item1.style ? item1.style : null}>${
              item1.handle ? item1.handle(item) : item[item1.name] || ''
            }</td>`)
        );
        demo1 = `<tr>${demo1}</tr>`;
        line = demo1;
        body = body + line;
      });
      return `<table  border="1">${title}${body}</table>`;
    },

以示参考,不清楚的有意见的可提问留言

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值