title: angularjs : how to convert html table to excel with multi worksheet?
body: <p>I am using angularjs 1.5.8. I have learned there is one way can convert html table to Excel in angularjs, with service codes as below:</p>
  
  <pre><code>myApp.factory('Excel',function($window){
      var uri='data:application/vnd.ms-excel;base64,',
          template='&lt;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"&gt;&lt;head&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;&lt;x:ExcelWorkbook&gt;&lt;x:ExcelWorksheets&gt;&lt;x:ExcelWorksheet&gt;&lt;x:Name&gt;{worksheet}&lt;/x:Name&gt;&lt;x:WorksheetOptions&gt;&lt;x:DisplayGridlines/&gt;&lt;/x:WorksheetOptions&gt;&lt;/x:ExcelWorksheet&gt;&lt;/x:ExcelWorksheets&gt;&lt;/x:ExcelWorkbook&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;/head&gt;&lt;body&gt;&lt;table&gt;{table}&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;',
          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;
          }
      };
  })
  </code></pre>
  
  <p>In controller file, codes as below:</p>
  
  <pre><code>$scope.exportToExcel=function(tableId){ // ex: '#my-table'
          var exportHref=Excel.tableToExcel(tableId,'WireWorkbenchDataExport');
          $timeout(function(){location.href=exportHref;},100); // trigger download
      }
  </code></pre>
  
  <p>There is one codepen example here:
  <a href="https://codepen.io/marco27384/pen/pboLyx" rel="nofollow noreferrer">export html table to excel</a></p>
  
  <p>As you can see, above example can only create a Excel with one worksheet. If I have several tables, I need to place them in different worksheet, each worksheet can only has one table. How to realize that?</p>