2013-03-22 111 views
2

我想導出我的HTML表格使用本Gist給出的代碼到Excel。但在導出後,當我打開文件時,它在Excel中顯示演示頁面的html代碼。任何人都可以給出正確的javascript樣本,用於導出html表格到Excel中(應該在Office Calc中打開)。導出HTML表到excel使用javascript

編輯:附加的圖像截圖。

Attached the image screenshot.

+0

樣品作品就好在這裏。 Win7,Google Chrome,Office 2007.我注意到,打開文件時顯示的excel消息框顯示爲:「您嘗試打開的文件'download.xls'的格式與文件擴展名指定的格式不同。在打開文件之前,文件沒有被破壞,並且來自可信來源,你現在想打開文件嗎?「 - 將文件重命名爲download.xlsx導致excel拒絕打開它。然而,因爲它代表,Excel文件看起來就像同爲HTML表格,且在細胞藍色背景(2,2) – enhzflep 2013-03-22 06:15:47

+0

可能複製http://stackoverflow.com/questions/13710405/javascript-table-export-到Excel – Trikaldarshi 2013-03-22 06:41:39

+0

也http://stackoverflow.com/questions/4507666/html-to-excel-export – Trikaldarshi 2013-03-22 06:42:30

回答

0

這裏是我做了一個功能。

加上你不想在Excel中顯示元素「刪除」級。

function exportExcel(id,name){ //<table> id and filename 
    var today = new Date(); 
    var date = ('0'+today.getDate()).slice(-2)+"-"+('0'+(today.getMonth()+1)).slice(-2)+"-"+today.getFullYear(); 

    var file_name = name+"_"+date+".xls"; //filename with current date, change if needed 
    var meta = '<meta http-equiv="content-type" content="text/html; charset=UTF-8" />'; 
    var html = $("#"+id).clone(); 

    html.find('.remove').remove(); //add the 'remove' class on elements you do not want to show in the excel 
    html.find('a').each(function() { //remove links, leave text only 
     var txt = $(this).text(); 
     $(this).after(txt).remove(); 
    }); 
    html.find('input, textarea').each(function() { //replace inputs for their respectives texts 
     var txt = $(this).val().replace(/\r\n|\r|\n/g,"<br>"); 
     $(this).after(txt).remove(); 
    }); 
    html.find('select').each(function() { //replace selects for their selected option text 
     var txt = $(this).find('option:selected').text(); 
     $(this).after(txt).remove(); 
    }); 
    html.find('br').attr('style', "mso-data-placement:same-cell"); //make line breaks show in single cell 
    html = "<table>"+html.html()+"</table>"; 

    var uri = 'data:application/vnd.ms-excel,'+encodeURIComponent(meta+html); 
    var a = $("<a>", {href: uri, download: file_name}); 
    $(a)[0].click(); 
} 

調用它的事件,例如:

$("#export_button").click(function(e){ 
    exportExcel("table_id", "filename"); 
});