2013-10-20 80 views
0

我想從HTML代碼中導出幾個表格到Excel中,我在Stack Overflow上找到了一個函數,並且它可以完美地與一個表格相匹配,但我試圖使所以它可以導出幾個表格,我一直在努力,沒有運氣,這裏是我的代碼。用JavaScript函數將多個HTML表格導出到Excel

<script type="text/javascript"> 
function tableToExcel(name) { 
     var tables=[]; 
     r('div[id^="reportesTablaExcel"]').each(function(){ 
      tables.push(r(this).attr('id')); 
     }); 
     console.log(tables); 
     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]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></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]; }) } 
     var i; 
     for (i = 0; i < tables.length; ++i) { 

      var table = tables[i]; 

      if (!table.nodeType) table = document.getElementById(table) 
      var ctx = {worksheet: name || 'Worksheet', table: eval(tables[+i+]).innerHTML} 
      window.location.href = uri + base64(format(template, ctx)) 

      console.log(); 

     } 

    return window.location.href; 
} 

<input style="display:none;" type="button" id="exportarExcel" onclick="tableToExcel('W3C Example Table')" value="Export to Excel"> 
+0

原因可能是你觸發'window.location.href'一個循環中的變化......(不知道)準備如何該網址和每個表格添加一個錨點導出它,所以你只能做一次location.href更改?如果您還可以添加您所包含的原始計算器資源,這將是一件好事 –

回答

1

末我沒有這樣說:

function tableToExcel(name) { 
     var tables=[]; 
     r('div[id^="reportesTablaExcel"]').each(function(){ 
      tables.push(r(this).attr('id')); 
     }); 

     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]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></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]; }) } 
     var i; 
     completeTables=[]; 
     for (i = 0; i < tables.length; ++i) { 
      var table = tables[i]; 
      completeTables.push(r("#reportesTablaExcel"+i).html()); 
     } 
     if (!table.nodeType) table = table 
      var ctx = {worksheet: name || 'Worksheet', table: completeTables} 
      window.location.href = uri + base64(format(template, ctx)) 

    return window.location.href; 
} 

+0

您是他還是他? gist.github.com/insin/1031969我很好奇,因爲如果我應該給你信用而不是他,我想知道我什麼時候發佈https://github.com/rainabba/jquery-table2excel(有很多清理up代碼)。 – rainabba

相關問題