js实现导出Excel文档

HTML部分 

 <button onclick='importBtn()'>导出</button>

JS部分 

const base64 = s => window.btoa(unescape(encodeURIComponent(s)));
    importBtn = () => {
      // 导出获取Excel
      const jsonData = [{//首行标题
        data1: '床位名称',
        data2: '床位代码',
        data3: '床位外部代码',
        data4: '所属科室代码',
        data5: '所属病区代码',
        data6: '所属病房代码',
        data7: '管床医生工号',
        data8: '管床护士工号',
        data9: '排序',
        data10: '是否启用(1:启用;0:不启用)',
        data11: '备注',
      }, {//写死一段数据
        data1: '床位1',
        data2: '4001',
        data3: '4001',
        data4: '1001',
        data5: '2001',
        data6: '3001',
        data7: '',
        data8: '',
        data9: '1',
        data10: '1',
        data11: '无',
      },]
      //列标题,逗号隔开,每一个逗号就是隔开一个单元格
      let str = `<span style="color: #FF5A6A;font-size: 25px;">注意:红色字段为必填,</span><span style="font-size: 25px;">此行保留不可删除</span>\n</tr>`
      // 增加\t为了不让表格显示科学计数法或者其他格式
      for (let i = 0; i < jsonData.length; i++) {
        for (const key in jsonData[i]) {
          if (i == 0 && (key == 'data1' || key == 'data2' || key == 'data10')) {
            str += `<td style="color: #FF5A6A; ">${jsonData[i][key] + '\t'}</td>`
          } else {
            str += `<td style=""width: 110px; ">${jsonData[i][key] + '\t'}</td>`
          }
        }
        str += '\n' + '</tr>';
      }
      const template = `<html xmlns:o="urn:schemas-microsoft-com:office:office" 
        xmlns:x="urn:schemas-microsoft-com:office:excel" 
        xmlns="http://www.w3.org/TR/REC-html40">
        <head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
        <x:Name>${'Sheet1'}</x:Name>
        <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
        </x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
        </head><body><table>${str}</table></body></html>`;
      // encodeURIComponent解决中文乱码
      const uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(template);
      // 通过创建a标签实现
      const link = document.createElement("a");
      link.href = uri;
      // 对下载的文件命名
      link.download = "床位导入模板.xlsx";
      link.click();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值