json转excel js

function exportExcel(FileName = '数据统计', JSONData = [], columns = []) {
    let excel = '<table>';
    //设置表头
    let row = '<tr>';
    for (let i = 0, l = columns.length; i < l; i+=1) {
      row += `<td>${columns[i].title}</td>`;
    }
    //换行
    excel += `${row}</tr>`;
    //设置数据
    for (let i = 0; i < JSONData.length; i+=1) {
      let row = '<tr>';
      for (let j = 0; j < columns.length; j+=1) {
        let value = JSONData[i][columns[j].key];
        row += `<td>${value}</td>`;
      }
      excel += `${row}</tr>`;
    }
    excel += '</table>';


    const excelFile = `
      <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'>
        <meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8">
        <head>
          <!--[if gte mso 9]>
          <xml>
            <x:ExcelWorkbook>
              <x:ExcelWorksheets>
                <x:ExcelWorksheet>
                  <x:Name>
                    {worksheet}
                  </x:Name>
                  <x:WorksheetOptions>
                    <x:DisplayGridlines/>
                  </x:WorksheetOptions>
                </x:ExcelWorksheet>
              </x:ExcelWorksheets>
            </x:ExcelWorkbook>
          </xml>
          <![endif]-->
        </head>
        <body>
         ${excel}
        </body>
      </html>
    `;

    const link = document.createElement('a');
    link.href = `data:application/vnd.ms-excel;charset=utf-8,${encodeURIComponent(excelFile)}`;
    link.style = 'visibility:hidden';
    link.download = `${FileName}.xls`;
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);

  }


注: const columns = [
  {
    key: 'title',
    title: '报告名称',
  }, {
    key: 'type',
    title: '类型',
  }]

 const data = [{title: 'xxxx', type='sda'}]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值