Here ,I am calling my node program and getting data from MYSQL and on click exporting in 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
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. Please help.
Solved Edit 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;
}
};
});