2013-10-16 50 views
9

我正在使用javascript代碼導出html表格到.xls文件。它在crome中工作,當數據不是很大時。但是當數據很大時,它會顯示錯誤導出爲.xls文件在大數據時不起作用

enter image description here

我已經用於出口表爲.xls文件的代碼如下:

function exportDiv() { 
    //working on crome perfectly  
     var dt = new Date(); 
     var day = dt.getDate(); 
     var month = dt.getMonth() + 1; 
     var year = dt.getFullYear(); 
     var hour = dt.getHours(); 
     var mins = dt.getMinutes(); 
     var postfix = day + "." + month + "." + year + "_" + hour + "." + mins; 
     var a = document.createElement('a'); 
     var data_type = 'data:application/vnd.ms-excel'; 
     var table_div = document.getElementById('tbl-1'); 
     var table_html = table_div.outerHTML.replace(/ /g, '%20'); 
     a.href = data_type + ', ' + table_html; 
     a.download = 'exported_table_' + postfix + '.xls'; 
     a.click(); 
     e.preventDefault(); 

} 

我也有足夠的4 GB的RAM,所以我認爲它不是內存限制問題。

你能幫我解決如何導出大量數據嗎? 編輯:我ahve用這樣的方式也

var table_html=encodeURIComponent(table_div.outerHTML); 

但還是同樣的錯誤來。

+0

不回答你的問題,但你可以利用['encodeURIComponent方法()'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURIComponent)代替自己替換特殊字符。 – Passerby

+0

進入無限循環,我想 –

+0

@Arun Killu:只有這個函數被調用,並且我已經將表格下載爲.xls文件,所以無限循環在哪裏? – user1181940

回答

0

我已經調用tableToexcel函數按鈕點擊,如下所示,它在Firefix中工作正常。

<a id="dlink" style="display:none;"></a> 

    var tableToExcel = (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, filename) { 
       if (!table.nodeType) table = document.getElementById(table) 
       var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML } 

       document.getElementById("dlink").href = uri + base64(format(template, ctx)); 
       document.getElementById("dlink").download = filename; 
       document.getElementById("dlink").click(); 

      } 
     })(); 
1

excel表格的字符數限制爲32767個字符,類似於excel單元格的字符數限制。

參考檢查此鏈接:http://office.microsoft.com/en-in/excel-help/excel-specifications-and-limits-HP010073849.aspx

+0

這是** NOT ** excel文件,它只是一個* .htm文件,可以通過Excel打開。它會警告你擴展和文件格式不匹配。 – Arnthor

+0

工作表有1,048,576行16,384列。我有3500行和30列的表。所以我認爲它不會讓我崩潰。 – user1181940

1

最有可能你已經打在Chrome中2 MB URL限制。你可以在這裏閱讀 - issue link。我建議你在Firefox中嘗試你的應用程序,如果它有效,那就是問題所在。

+0

但是我的代碼在firefox中不起作用。當我點擊導出按鈕時,它不會做任何事情。我也檢查錯誤日誌,但沒有任何錯誤。 – user1181940

+0

謝謝,你的右邊的firefox對我來說沒問題。 –