使用javascript将巨大(3000+行)HTML表格导出到Excel

我有一个问题,出口一个很大数量的行的HTML表格要优秀。 正如我在标题中指出的那样,它有3000多行和大约6列。

我已经尝试过这一个, 如何导出HTML表格使用JavaScript的Excel

工作正常! 那么,至less在小桌子上。 但是当我把它与我想要转换的表绑定时,它会加载一段时间然后停止。

有人可以帮我从这里出去吗?

PS,我不想使用ActiveXObject,因为我不想只限于使用IE浏览器。

提前致谢!

编辑:代码

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

适用于IE和Firefox,但不适用于Chrome。 这是为什么?

下面的代码是为我在chrome中为超过2000条logging的表格工作的。

 csv = [] rows = $('#YourHTMLtableId tr'); for(i =0;i < rows.length;i++) { cells = $(rows[i]).find('td,th'); csv_row = []; for (j=0;j<cells.length;j++) { txt = cells[j].innerText; csv_row.push(txt.replace(",", "-")); } csv.push(csv_row.join(",")); } output = csv.join("\n") var textToSave = output; var textToSaveAsBlob = new Blob([textToSave], {type:"text/plain"}); var textToSaveAsURL = window.URL.createObjectURL(textToSaveAsBlob); var fileNameToSaveAs = "something.csv"; var downloadLink = document.createElement("a"); downloadLink.download = fileNameToSaveAs; downloadLink.innerHTML = "Download File"; downloadLink.href = textToSaveAsURL; downloadLink.onclick = destroyClickedElement; function destroyClickedElement(event) { document.body.removeChild(event.target); } downloadLink.style.display = "none"; document.body.appendChild(downloadLink); downloadLink.click();