I have tried to download my complex html table to excel using javascript code in 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();
}
}
This exports my html perfectly in excel file But there is issue with format . downloading format in (.xls) because of that showing error like format extension doesn't match and file corrupted or safe issue? in order, to fix issue download format extension will be (.xlsx) and after somany search I found one solution to download in xlsx in table2export and many package with jquery but I couldn't found solution with angular 7 implementation. Can anyone suggest me solution for this issue? Thanks in advance.