1

I have a problem in export to Excel.

view

<a ng-href="#">
<i class="fa fa-file-excel-o" ng-click="export_excel()"> Export to Excel</i> </a>

   <table class="table table-striped table-bordered table-hover table-checkable order-column" id="sample_1">
                <thead>
                    <tr>   
                        <th>Sl No</th>
                        <th>Scope of Work</th>
                        <th>Description</th>

                    </tr>
                </thead>
                <tbody>
                    <tr class="odd gradeX" ng-repeat="scpdata in scopeData"> 
                        <td>{{$index + 1}}</td>
                        <td>{{scpdata.scope_of_work}}</td>
                        <td>{{scpdata.ss_description}}</td> 
                    </tr>

                </tbody>
            </table>

js controller

  $scope.export_excel = (function() { 
        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 function(table, name) {
            if (!table.nodeType) table = document.getElementById(table)
            var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
            window.location.href = uri + base64(format(template, ctx))
        }
    })() 

I'm new in Angular.

I refer to this question here.

3
  • What exactly is the problem?
    – Arun Ghosh
    Commented Aug 17, 2016 at 6:41
  • Are you really sure generating excel file on client is the way to go? Usually such tasks performed on the server side (just saying) Commented Aug 17, 2016 at 6:42
  • i started this based on the above link.Now i got this error: angular.js:12477 TypeError: Cannot read property 'nodeType' of undefined
    – robins
    Commented Aug 17, 2016 at 6:44

1 Answer 1

2

Use Following Code

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

And in Controller

 $scope.exportToExcel = function (tableId) {  // ex: '#my-table'   
   var exportHref = Excel.tableToExcel(tableId, 'sheetname');
   $timeout(function () { location.href = exportHref; }, 100);    }
8
  • hi.i want to ask u..u there
    – robins
    Commented Aug 17, 2016 at 8:16
  • Hi what do you want ask?
    – User
    Commented Aug 17, 2016 at 8:32
  • $scope.exportToExcel = function ('#sample_1') ..An error line under this
    – robins
    Commented Aug 17, 2016 at 8:35
  • use this in button action like <input ng-click="exportToExcel('#tblcenter_Per_emp')" > donot write in controller function
    – User
    Commented Aug 17, 2016 at 8:39
  • In console show this ReferenceError: Excel is not defined
    – robins
    Commented Aug 17, 2016 at 8:43

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.