Javascript 在AngularJS中编译HTML以用于Excel导出
我使用以下函数将使用angularJS生成的HTML表导出到Excel。 目前我缺少的是获取已编译的HTML,因为我目前只获取尚未编译的InnerHTML代码,因此数据根本不会返回Javascript 在AngularJS中编译HTML以用于Excel导出,javascript,angularjs,Javascript,Angularjs,我使用以下函数将使用angularJS生成的HTML表导出到Excel。 目前我缺少的是获取已编译的HTML,因为我目前只获取尚未编译的InnerHTML代码,因此数据根本不会返回 exportAsExcel(tableId: string, fileName: string, linkElement: any) { var uri = 'data:application/vnd.ms-excel;base64,', template = '<ht
exportAsExcel(tableId: string, fileName: string, linkElement: any) {
var uri = 'data:application/vnd.ms-excel;base64,',
template = '<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]--></head><body><table>{table}</table></body></html>',
base64 = function (s) {
return window.btoa(decodeURIComponent(encodeURIComponent(s)));
},
format = function (s, c) {
return s.replace(/{(\w+)}/g, function (m, p) {
return c[p];
});
};
this.common.$timeout(() => {
var table = document.getElementById(tableId);
var ctx = {
worksheet: fileName,
table: table.innerHTML
};
// if browser is IE then save the file as blob, tested on IE10 and IE11
var browser = window.navigator.appVersion;
if ((browser.indexOf('Trident') !== -1 && browser.indexOf('rv:11') !== -1) ||
(browser.indexOf('MSIE 10') !== -1)) {
var builder = new MSBlobBuilder();
builder.append(uri + format(template, ctx));
var blob = builder.getBlob('data:application / vnd.ms - excel'); //application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
window.navigator.msSaveBlob(blob, fileName + '.xls');
} else {
var element = document.getElementById(linkElement);
var a = document.createElement('a');
a.href = uri + base64(format(template, ctx));
a.target = '_blank';
a.setAttribute('download', fileName + '.xls');
document.body.appendChild(a);
a.click();
}
toastr.success("We've created an Excel report for you and you should get it as a download in your browser.", "Awesome!");
}, 100);
}
exportAsExcel(tableId:string,fileName:string,linkElement:any){
var uri='data:application/vnd.ms excel;base64',
模板=“{table}”,
base64=函数{
返回窗口.btoa(解码组件(编码组件));
},
格式=函数(s,c){
返回s.replace(/{(\w+)}/g,函数(m,p){
返回c[p];
});
};
此.common.$timeout(()=>{
var table=document.getElementById(tableId);
变量ctx={
工作表:文件名,
表:table.innerHTML
};
//如果浏览器是IE,则将文件另存为blob,在IE10和IE11上进行测试
var browser=window.navigator.appVersion;
if((browser.indexOf('Trident')!=-1&&browser.indexOf('rv:11')!=-1)||
(browser.indexOf('MSIE 10')!=-1)){
var builder=新的MSBlobBuilder();
append(uri+格式(模板,ctx));
var blob=builder.getBlob('data:application/vnd.ms-excel');//application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
msSaveBlob(blob,文件名+'.xls');
}否则{
var元素=document.getElementById(linkElement);
var a=document.createElement('a');
a、 href=uri+base64(格式(模板,ctx));
a、 目标='u blank';
a、 setAttribute('download',fileName+'.xls');
文件.正文.附件(a);
a、 单击();
}
toastr.success(“我们已经为您创建了一个Excel报告,您应该在浏览器中下载它。”,“太棒了!”);
}, 100);
}
您知道为了编译table.innerHTML需要增强/更改什么吗
非常感谢您的任何提示 使用$compile()…参见文档。听起来您在页面加载过程中调用此选项太早了though@charlietfl谢谢你的提示。你会在哪里/什么时候叫它?由于最初的想法,我暂停了。但这并没有真正的帮助。使用$compile()…查看文档。听起来您在页面加载过程中调用此选项太早了though@charlietfl谢谢你的提示。你会在哪里/什么时候叫它?由于最初的想法,我暂停了。但这并没有真正起作用。