本文介绍了Angular Excel导出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在这里,我正在调用我的节点程序,并从MYSQL获取数据,然后单击在Excel中导出.
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;
}
};
})
}
错误:
TypeError: Cannot read property 'tableToExcel' of undefined
请提供帮助.
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;
}
};
});
在编辑代码"中,我可以下载带有标头的excel,但我的mysql数据不包含在内,我需要在代码中进行更改,以便可以与数据一起下载.请帮忙.
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.
解决了修改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
}
});
这篇关于Angular Excel导出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!