在Angular js中导出到Excel

我在导出到Excel时遇到问题。

视图

<a ng-href="#"> <i class="fa fa-file-excel-o" ng-click="export_excel()"> Export to Excel</i> </a> <table class="table table-striped table-bordered table-hover table-checkable order-column" id="sample_1"> <thead> <tr> <th>Sl No</th> <th>Scope of Work</th> <th>Description</th> </tr> </thead> <tbody> <tr class="odd gradeX" ng-repeat="scpdata in scopeData"> <td>{{$index + 1}}</td> <td>{{scpdata.scope_of_work}}</td> <td>{{scpdata.ss_description}}</td> </tr> </tbody> </table> 

JS控制器

  $scope.export_excel = (function() { 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(unescape(encodeURIComponent(s))) } , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) } return function(table, name) { if (!table.nodeType) table = document.getElementById(table) var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML} window.location.href = uri + base64(format(template, ctx)) } })() 

我是Angular的新手。

我在这里提到这个问题 。

使用以下代码

 modulename.factory('Excel', function ($window) { 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(unescape(encodeURIComponent(s))); }, format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }; return { tableToExcel: function (tableId, worksheetName) { var table = $(tableId), ctx = { worksheet: worksheetName, table: table.html() }, href = uri + base64(format(template, ctx)); return href; } };}) 

并在控制器

  $scope.exportToExcel = function (tableId) { // ex: '#my-table' var exportHref = Excel.tableToExcel(tableId, 'sheetname'); $timeout(function () { location.href = exportHref; }, 100); }