2

J'essaie d'exporter les données de ma table de données angulaires dans une feuille Excel. Je réussis à exporter l'ensemble de l'objet JSON dans une feuille Excel. Ce que je cherche est, pour obtenir les données recherchées/filtrées seulement pour être exporté dans Excel, si la recherche est vide puis exporte toutes les données.Exportation des données filtrées/recherchées dans Excel, à partir d'une donnée angulaire

Pour la référence laissez-moi vous montrer comment mon code est

Ceci est mon contrôleur

userService.getUserList(function(response) { 
    if (response.status === 200) { 
     vm.users = response.data.userDetails; 
     return; 
    } 
    if (response.status === 400) { 
     return toastr.error(response.data.exception); 
    } 

}); 


vm.exportData = function() { 

    vm.listOfUsers = angular.copy(vm.users); 

    vm.filteredData = _.map(vm.listOfUsers, function(data){ 
     var status = (data.isActive==true)?'Active':'In-Active'; 

     var users = {'Name': data.fullName, 'Email': data.email, 'Designation': data.designation, 'Company Name': data.companyName,'Status':status} 
     return users; 
    }); 

    alasql('SELECT * INTO XLSX("download.xlsx",{headers:true}) FROM ?', [vm.filteredData]); 
} 

Ceci est mon HTML

<div class="table-toolbar"> 
    <div class="row"> 
      <div class="col-md-6"> 
       <div class="btn-group"> 
        <button id="sample_editable_1_new" class="btn sbold green" ng-click="vm.exportData()">Export As Excel</button> 
       </div> 
      </div>          
    </div> 
</div> 

<div class="dataTables_wrapper no-footer"> 
    <table class="table table-striped table-bordered table-hover dataTable" datatable="ng" id="sample_1"> 
     <thead> 
      <tr> 
       <th> Sl. No. </th> 
       <th> Name </th> 
       <th> Email </th> 
       <th> Designation </th>                         
       <th> Company Name </th>             
       <th> Status </th> 
      </tr> 
     </thead> 
     <tbody> 
      <tr ng-repeat="user in vm.users"> 
        <td> {{$index+1}} </td> 
        <td> {{user.fullName}} </td> 
       <td> {{user.email}} </td> 
        <td> {{user.designation}} </td>                         
        <td> {{user.companyName}} </td>             
        <td>{{user.isActive === true? "Active" : "In-Active" }} 
        </td> 
       </tr> 
      </tbody> 
    </table> 

Comme datatables a une fonctionnalité intégrée de recherche, lorsque l'utilisateur tape quelque chose, il commence à chercher, donc quand l'utilisateur recherche, puis cliquez sur le bouton Exporter, puis je souhaite transmettre uniquement les données relatives à la requête de recherche, afin que seules ces données soient exportées dans Excel.

Répondre

0

J'ai trouvé une solution,

plutôt que d'imprimer les données, j'ai imprimé toute la table HTML, donc quelle que soit la recherche ou l'ordre de tri. les mêmes données qui seront dans le HTML seront exportées.

seul changement est, j'ai ajouté la classe userDatatable à la table en html et a changé la requête alasql comme suit

alasql('SELECT * INTO XLSX("download.xlsx",{headers:true}) \ 
       FROM HTML(".userDatatable")'); 

Ce fixe mon issue.Hope il aide quelqu'un