天天看點

json寫入到excel表

1. 拼接傳回的json資料

// 拼接需要下載下傳報表的HTML,并傳回html;
reportHtml(reporttData) {
    let html = `<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]>
  <meta http-equiv="Content-Type"" content="text/html;charset=utf-8" />
  <style> .xl24 {
    mso-style-parent: style0;
    mso-number-format: "" \\@ "";
    text-align: right;
    vnd . ms-excel .
    numberformat: @
  } </style>
  <xml>
    <x:ExcelWorkbook>
      <x:ExcelWorksheets>
        <x:ExcelWorksheet>
          <x:Name>報表</x:Name>
          <x:WorksheetOptions>
            <x:DisplayGridlines/>
          </x:WorksheetOptions>
        </x:ExcelWorksheet>
      </x:ExcelWorksheets>
    </x:ExcelWorkbook>
  </xml><![endif]--></head>
<body>`
    html += `<table><thead>
        <tr>
          <th>姓名</th>
          <th>性别</th>
          <th>備注</th>
        </tr>
    </thead><tbody>`;
    reporttData.forEach(item => {
      html += `<tr>
           <td>${item.name ? item.name : \'\'}</td>
        <td>${item.sex === \'1\' ? \'男\' : \'女\'}</td>
        <td>${item.IsVip === \'1\' ? \'會員\' : \'非會員\'}</td>
        <td>${item.msg? item.msg : \'\'}</td></tr>`;
    })
    html += `</tbody></table></body></html>`;
    return html;
  }      

2. 點選下載下傳時下載下傳報表

let html = this.reportHtml(response.data)
        var blob = new Blob([html], {type: "application/vnd.ms-excel;charset=utf-8"});  
        var objectUrl = URL.createObjectURL(blob);  
        console.log(objectUrl)
        var a = document.createElement(\'a\');
        document.body.appendChild(a);
        a.setAttribute(\'style\', \'display:none\');
        a.setAttribute(\'href\', objectUrl);
        a.setAttribute(\'download\', \'fileName\');
        a.click();
        URL.revokeObjectURL(objectUrl);       
json寫入到excel表