Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在AngularJS中编译HTML以用于Excel导出_Javascript_Angularjs - Fatal编程技术网

Javascript 在AngularJS中编译HTML以用于Excel导出

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

我使用以下函数将使用angularJS生成的HTML表导出到Excel。 目前我缺少的是获取已编译的HTML,因为我目前只获取尚未编译的InnerHTML代码,因此数据根本不会返回

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谢谢你的提示。你会在哪里/什么时候叫它?由于最初的想法,我暂停了。但这并没有真正起作用。