2013-10-16 16 views
9

Tôi đang sử dụng mã javascript cho bảng xuất khẩu html để file.Its .xls làm việc trong crome và khi dữ liệu không phải là large.But khi dữ liệu quá lớn thì nó chỉ cho tôi lỗi nhưxuất khẩu dưới dạng file .xls không hoạt động khi dữ liệu lớn

enter image description here

mã mà tôi đã sử dụng để xuất khẩu bảng như tập tin .xls như sau:

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(); 

} 

tôi cũng có đủ ram 4 gb vì vậy tôi nghĩ rằng vấn đề không phải là bộ nhớ giới hạn của nó.

bạn có thể vui lòng giúp tôi làm thế nào để xuất dữ liệu lớn? Edit: tôi ahve sử dụng cách này cũng

var table_html=encodeURIComponent(table_div.outerHTML); 

Nhưng vẫn cùng một lỗi đến.

+0

Không trả lời câu hỏi của bạn, nhưng bạn có thể tận dụng [ 'encodeURIComponent()'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURIComponent) thay vì thay thế các ký tự đặc biệt. – Passerby

+0

nhận được vào vòng lặp vô hạn tôi giả sử –

+0

@ Chạy Killu: chỉ một lần chức năng này được gọi và trong đó tôi chỉ cần tải xuống bảng dưới dạng tệp .xls để vòng lặp vô hạn ở đâu? – user1181940

Trả lời

0

Tôi đã gọi là chức năng tableToexcel vào nút bấm giống như dưới đây và nó đang làm việc tốt trong 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 sheet đã có một giới hạn ký tự cho 32.767 ký tự tương tự như của một tế bào excel.

để kiểm tra tài liệu tham khảo liên kết này: http://office.microsoft.com/en-in/excel-help/excel-specifications-and-limits-HP010073849.aspx

+0

Đây là ** KHÔNG ** một file excel, nó chỉ là một tập tin * .htm, có thể được mở bằng Excel. Nó sẽ cảnh báo bạn về phần mở rộng và định dạng tệp không phù hợp. – Arnthor

+0

bảng tính có 1.048.576 hàng bởi 16,384 cột. Tôi có bảng với 3500 hàng và 30 cột. Do đó tôi nghĩ rằng nó sẽ không ristrict tôi để exlode. – user1181940

1

Nhiều khả năng bạn đã đạt giới hạn URL 2 MB trong Chrome. Bạn có thể đọc về nó ở đây - issue link. Tôi đề nghị bạn thử ứng dụng của bạn trong Firefox, nếu nó hoạt động, thì đó là vấn đề.

+0

Nhưng mã của tôi không hoạt động trong firefox. Khi tôi nhấp vào nút xuất thì nó sẽ không làm bất cứ điều gì. Tôi cũng đã kiểm tra nhật ký lỗi nhưng không có lỗi nào. – user1181940

+0

Cảm ơn, firefox phù hợp của bạn là ok cho tôi. –

Các vấn đề liên quan