экспорт html в xlsx с использованием angular 7 - PullRequest
0 голосов
/ 27 января 2020

Я пытался загрузить свою сложную таблицу html, чтобы преуспеть, используя javascript код в angular 7.

<button (click)="export_xls('exportContent');" class="btn btn-success excelexport_btn float-right">Export TO Excel</button>

<div [innerHTML]="html_data" id="exportContent">
<table>
 <tr>
  <td colspan="2">&nbsp;</td>
  <td>&nbsp;</td>
 </tr>
 <tr>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
 </tr>
 <tr>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
 </tr>
</table>
</div>

export_xls(element) {
  var tab_text = '<html xmlns:x="urn:schemas-microsoft-com:office:excel">';
  tab_text = tab_text + '<head><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>';

  tab_text = tab_text + '<x:Name>Test Sheet</x:Name>';

  tab_text = tab_text + '<x:WorksheetOptions><x:Panes></x:Panes></x:WorksheetOptions></x:ExcelWorksheet>';
  tab_text = tab_text + '</x:ExcelWorksheets></x:ExcelWorkbook></xml></head><body>';

  tab_text = tab_text + "<table border='1px'>";
  tab_text = tab_text + document.getElementById(element).innerHTML;
  tab_text = tab_text + '</table></body></html>';

  var data_type = 'data:application/vnd.ms-excel';

  var ua = window.navigator.userAgent;
  var msie = ua.indexOf("MSIE ");

  if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {
      if (window.navigator.msSaveBlob) {
          var blob = new Blob([tab_text], {
              type: "application/csv;charset=utf-8;"
          });
          navigator.msSaveBlob(blob, 'Test file.xls');
      }
  } else {
    var downloadLink = document.createElement("a");
    document.body.appendChild(downloadLink);
    downloadLink.href = data_type + ', ' + encodeURIComponent(tab_text);
        downloadLink.download = 'Test file.xls';
        downloadLink.click();
  }
}

Это отлично экспортирует мои html в файл Excel, но есть проблема с форматом. загрузка формата в (.xls) из-за этой ошибки показа, как расширение формата не совпадает и файл поврежден или безопасная проблема? для того, чтобы решить проблему, расширение формата загрузки будет (.xlsx), и после такого поиска я нашел одно решение для загрузки в xlsx в table2export и многих пакетах с jquery, но я не смог найти решение с реализацией angular 7. Кто-нибудь может предложить мне решение этой проблемы? Заранее спасибо.

...