[英]Angular excel export
Here ,I am calling my node program and getting data from MYSQL and on click exporting in excel. 在这里,我正在调用我的节点程序,并从MYSQL获取数据,然后单击在Excel中导出。
$scope.exportToExcel=function(){
$http.get("/getDetails").then(function(response){
console.log(response.data)
$scope.details = response.data[1].data; // here you will get data
},function(res){
console.log("Error",res) //error occured
});
$scope.exportToExcel=function(tableId){ // ex: '#my-table'
var exportHref=Excel.tableToExcel(tableId,'WireWorkbenchDataExport');
$timeout(function(){location.href=exportHref;},100); // trigger download
}
var myApp=angular.module('myApp',[]);
myApp.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;
}
};
})
}
Error: 错误:
TypeError: Cannot read property 'tableToExcel' of undefined
Please help with the same. 请帮助相同。
EDIT:1 编辑:1
app.controller('myctrl', ['$scope','$http','$timeout','Excel', function($http,$timeout,Excel) {
$scope.exportToExcel=function(tableId){
$http.get("/getNodeService").then(function(response){
console.log(response.data)
$scope.details = response.data[1].data;
var exportHref=Excel.tableToExcel(tableId,'WireWorkbenchDataExport',$scope.details);
$timeout(function(){location.href=exportHref;},10000);
});
};
}]);
app.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,details){
console.log(details);
var table=$(tableId),
ctx={worksheet:worksheetName,table:table.html()},
href=uri+base64(format(template,ctx));
return href;
}
};
});
In Edit Code ,i am able to download excel with header but my mysql data is not coming in that , what i need to change in my code so that i can download with my data. 在“编辑代码”中,我可以下载带有标头的excel,但我的mysql数据不存在,我需要在代码中进行更改,以便可以与数据一起下载。 Please help. 请帮忙。
Solved Edit 2: 解决了编辑2:
$scope.exportToExcel=function(tableId){
$http.get('/getDetails').then(function(response){
console.log(response.data)
$scope.details = response.data[1].data; // here you will get data
var exportHref=Excel.tableToExcel(tableId,"worksheetName",$scope.details);
$timeout(function(){location.href=exportHref;},100);
});
};
}]);
app.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,details){
var table=$(tableId),
ctx={worksheet:worksheetName || 'Worksheet',table:table.html()},
href=uri+base64(format(template,ctx));
return href;
}
};
});
myApp.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;
}
};
}).controller('MyCtrl', function(Excel, $timeout) {
$scope.exportToExcel = function(tableId) { // ex: '#my-table'
var exportHref = Excel.tableToExcel(tableId, 'sheet name');
$timeout(function() {
location.href = exportHref;
}, 100); // trigger download
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.