ts文件

 downLoadReport(content, filename) { // content:需要下载的内容;filename: 下载下来的文件类型
    // 下载文件方法
    const eleLink = document.createElement('a');
    eleLink.download = filename;
    eleLink.style.display = 'none';
    // 字符内容转变成blob地址
    const blob = new Blob([content]);
    eleLink.href = URL.createObjectURL(blob);
    // 触发点击
    document.body.appendChild(eleLink);
    eleLink.click();
    // 然后移除
    document.body.removeChild(eleLink);
  }

  downInitClick(content, filename) {
    // 参数--pagesize:0;pageIndex:0--查询全部报表;
    const data = {
      ReportViewObjectPara: this.reportViewObjectPara,
      ShowColumn: [],
      pagesize: 0,
      pageIndex: 0
    };
    for (const key in this.ShowColumnCheckbox) {
      if (this.ShowColumnCheckbox[key]) {
        data.ShowColumn.push(key);
      }
    }

    if ('download' in document.createElement('a')) {
      this.interfaceService.downloadService({//这里是封装过的axios请求
        data: data,
        onSuccess: (response) => {
          // console.log('获取所有报表');
          // console.log(JSON.parse(response.data.result.data.jsonStr));

          const html = this.reportHtml(JSON.parse(response.data.result.data.jsonStr));
          this.downLoadReport(html, '报表.xls');
        },
        onFalied: (error) => {
          console.log(error);
        }
      });
    } else {
      alert('浏览器不支持');
    }
  }

  // 拼接需要下载报表的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>
          <th>起飞时间</th>
          <th>起飞机场</th>
          <th>到厅时间</th>
          <th>离厅时间</th>
          <th>操作人</th>
          <th>操作机构</th>
          <th>厅内消费</th>
          <th>备注</th>
        </tr>
    </thead><tbody>`;
    reporttData.forEach(item => {
      html += `<tr>
           <td>${item.PassengerName}</td>
        <td>${item.FlightNo}</td>
        <td>${item.IsVip}</td>
        <td>${item.DepartureTime}</td>
        <td>${item.DepartureAirportName}</td>
        <td>${item.CheckInTime}</td>
        <td>${item.CheckOutTime}</td>
        <td>${item.CreatorUserName}</td>
        <td>${item.InstitutionName}</td>
        <td>${item.ConsumerGoodsRemark}</td>
        <td>${item.Remark}</td></tr>`;
    })
    html += `</tbody></table></body></html>`;
    return html;
  }

html文件

<span class="s-btn-blue" (click)="downInitClick()">下载报表</span>

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 3 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐