Я пытался загрузить свою сложную таблицу 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"> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </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. Кто-нибудь может предложить мне решение этой проблемы? Заранее спасибо.