将过滤/search的数据从Angular数据表导出到Excel中
我正在试图将我的angular度数据表中的数据导出到Excel工作表中。 我成功地将整个Json对象导出到Excel工作表中。
我正在寻找的是,search/过滤的数据只被导出到Excel,如果search为空,然后导出所有的数据。
作为参考,让我告诉你我的代码是如何
这是我的控制器
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>
由于数据表具有内置的searchfunction,当用户键入内容时,它开始search,所以当用户search然后点击导出button时,我只想传递与search查询有关的数据,这样只有那些数据被导入到Excel中。
我find了解决办法,
我不打印数据,而是打印整个HTML表格,所以无论search或sorting顺序如何。 将会导出HTML中相同的数据。
只有变化是,我添加了userDatatable类到html中的表,并更改了alasql查询如下
alasql('SELECT * INTO XLSX("download.xlsx",{headers:true}) \ FROM HTML(".userDatatable")');
这固定我的问题。希望它可以帮助别人