2015-09-29 116 views
1

我有一個導出HTML表格的行數很大的excel問題。正如我在標題中指出的那樣,它有3000多行和大約6列。使用javascript將巨大(3000+行)HTML表格導出到Excel

我已經試過這一個,How to export html table to excel using javascript

工作正常!那麼,至少在小桌子上。但是當我將它與我想要轉換的表綁定時,它會加載一段時間然後停止。

任何人都可以幫助我嗎?

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,但不是在鉻。這是爲什麼?

+0

的[如何導出HTML表使用javascript脫穎而出]可能重複(http://stackoverflow.com/questions/6566831/how-to-export-html-table-to-excel-using-javascript ) – GergelyPolonkai

+0

@JunchaoGu,我沒有這樣的事情。他有一個彈出「下載」,但不是XLS格式,但我沒有這樣的。 – cedric

+0

@GergelyPolonkai,我試圖避免使用ActiveXObject,因爲它限制我的用戶只使用IE瀏覽器。 – cedric

回答

0

下面的代碼爲我在chrome中爲超過2000條記錄的表格工作。

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(); 
相關問題