angularjs实现导出excel

HTML部分:

<body ng-app="InfringementNoticeApp" ng-controller="InfringementNoticeController">

        <div class="panel-heading">
                    <div>
                        <table class="table table-bordered table-hover table-striped" id="table1">
                            <tr>
                                <th>罚单状态</th>
                                <th>操作</th>                                
                            </tr>

                            <tr ng-repeat="infringementNotice in infringementNotices">
                                <th ng-model="IsPay" ng-bind="infringementNotice.IsPay" ng-click="TicketStyle(infringementNotice)"></th>
                                <th ng-model="Operate" ng-bind="infringementNotice.Operate" ng-click="Ticketnotice()"></th>                                
                            </tr>
                        </table>
                    </div>


                        <button class="btn btn-link" ng-click="exportToExcel('#table1')">
                            <span class="glyphicon glyphicon-share">导出Excel</span> 
                        </button>

</body>

JS部分:

(function () {
    var app = angular.module('InfringementNoticeApp', ['ng-pagination']);

自定义导出factory:    

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) {
                var table = $(tableId),
                    ctx = { worksheet: worksheetName, table: table.html() },
                    href = uri + base64(format(template, ctx));
                return href;
            }
        };
    });

 app.controller('InfringementNoticeController', function ($scope, $http,Excel,$timeout) {

......

        //在table对应的controller里面添加方法:(调用之前要引用factory,$timeout)
        //导出excel
        $scope.exportToExcel = function(tableId) { 
            $scope.exportHref = Excel.tableToExcel(tableId, 'sheet name');
            $timeout(function() { location.href = $scope.exportHref; }, 100); // trigger download
        }

        var infringementNotices = [
            {
                IsPay: '扣款',
                Operate: '通知'
            }
        ];

 ......

})

})();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值