2017-09-21 9 views
0

Ici, j'appelle mon programme de noeud et j'obtiens des données de MYSQL et je clique sur export dans Excel.Angular excel export

$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; 
      } 
     }; 
    }) 
} 

Erreur:

TypeError: Cannot read property 'tableToExcel' of undefined 

S'il vous plaît aider avec le même.

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; 
      } 
     }; 
    }); 

Dans Modifier le code, je suis en mesure de télécharger Excel avec tête mais mes données mysql ne vient pas en ce que ce que je dois changer dans mon code afin que je puisse télécharger avec mes données. S'il vous plaît aider.

Résolu 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; 

      } 
     }; 
    }); 

Répondre

0
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 
    } 
}); 
+0

Peut-on utiliser l'option exemple de code dans l'éditeur pour montrer votre code beaucoup mieux. –

+0

je ne veux pas mentionner cette ligne .controller ('MyCtrl', fonction (Excel, $ timeout), car im en utilisant en haut, puis essorez seulement la fonction .. s'il vous plaît aider im très nouveau dans ce .. –

+0

Utilisez la fonction exportToExcel() dans votre contrôleur existant et assurez-vous que vous avez injecté l'Excel, et $ timeout dans votre contrôleur et les bibliothèques Excel ont été injectés – Gaurav