从Angular数据表导出过滤/搜索数据到Excel

时间:2016-07-05 09:20:09

标签: angularjs excel datatable export-to-excel angular-datatables

我正在尝试将角度数据表中的数据导出到Excel工作表中。我成功地将整个Json对象导出到Excel工作表中。

我正在寻找的是,只有将搜索/过滤的数据导出到Excel中,如果搜索为空,则导出所有数据。

为了参考,让我告诉你我的代码是如何

这是我的控制器

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

这是我的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>

由于数据表具有内置的搜索功能,当用户输入内容时,它会开始搜索,因此当用户搜索然后单击“导出”按钮时,我只想传递与搜索查询相关的数据,这样只有那些数据导出到Excel。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,

而不是打印数据,我打印整个HTML表,所以无论搜索或排序顺序。将导出将在HTML中的相同数据。

只有更改是,我在html中将userDatatable类添加到表中并更改了alasql查询,如下所示

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

这解决了我的问题。希望它可以帮助某人