Я экспортирую файл Excel в angular, который содержит стили цвета шрифта. Данные успешно экспортируются. Тем не менее, я получаю ниже предупреждение об открытии файла.
Я прошел через несколько ссылок переполнения стека, но не смог найти никакого решения. Пожалуйста, проверьте код ниже для экспорта в используемый метод Excel.
exportTableToExcel(table, sheetName, fileName) {
var reportName = this.editQueryData.QueryName.replace(/\s/g, "");
reportName = reportName.replace(/[^\w\s]/gi, "");
let sysDate = new Date();
var currentDate = moment(sysDate).format("DD-MM-YYYY_h-mm-ss");
fileName = reportName+'-'+currentDate;
let thd = $('#' + table).find('thead'), tbd = $('#' + table).find('tbody'), tbl = `<table id="_temp_table_for_export_to_excel" class="_temp_table_for_export_to_excel" style="color:black !important"><!--<caption>Exported Data</caption>-->
${$(thd)[0].outerHTML}${$(tbd)[0].outerHTML}</table>`;
//console.log(tbl);
$('body').append(tbl);
$('#_temp_table_for_export_to_excel thead th.notExportCsv, #_temp_table_for_export_to_excel tbody td.notExportCsv').remove();
table = '_temp_table_for_export_to_excel';
var style = `<style>
.redClr { background-color: #ff8989; }
.greenClr { background-color: #8dc572; }
.blueClr { background-color: blue; }
.orangeClr { background-color: #ffc65c; }
.color_red { color: red !important; }
.color_orange { color: orange !important; }
.color_green { color: green !important; }
</style>`;
var uri = 'data:application/vnd.ms-excel;base64,',
templateData = '<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]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->' + style + '</head><body><table>{table}</table></body></html>',
base64Conversion = function (s) { return window.btoa(unescape(encodeURIComponent(s))) },
formatExcelData = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }
if (!table.nodeType)
table = document.getElementById(table)
var ctx = { worksheet: sheetName || 'Worksheet', table: table.innerHTML }
var element = document.createElement('a');
element.setAttribute('href', 'data:application/vnd.ms-excel;base64,' + base64Conversion(formatExcelData(templateData, ctx)));
element.setAttribute('download', fileName + '.xls');
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
$('._temp_table_for_export_to_excel').remove();
}
Пожалуйста, дайте мне знать, где я делаю ошибку в своем коде и как я могу решить эту проблему.
Большое спасибо