How to export html table to excel using javascript -
my table in format
<table id="mytable"> <thead> <tr> <th>name</th> <th>place</th> </tr> </thead> <tbody> <tr> <td>adfas</td> <td>asdfasf</td> </tr> </tbody> </table> i found following code online. doesn't work if use "thead" , "tbody" tags
function write_to_excel() { str = ""; var mytable = document.getelementsbytagname("table")[0]; var rowcount = mytable.rows.length; var colcount = mytable.getelementsbytagname("tr")[0].getelementsbytagname("td").length; var excelapp = new activexobject("excel.application"); var excelsheet = new activexobject("excel.sheet"); excelsheet.application.visible = true; (var = 0; < rowcount; i++) { (var j = 0; j < colcount; j++) { str = mytable.getelementsbytagname("tr")[i].getelementsbytagname("td")[j].innerhtml; excelsheet.activesheet.cells(i + 1, j + 1).value = str; } }
the reason solution found on internet no working because of line starts var colcount. variable mytable has 2 elements being <thead> , <tbody>. var colcount line looking elements within mytable <tr>. best thing can give id <thead> , <tbody> , grab values based on that. had <thead id='headers'> :
function write_headers_to_excel() { str=""; var mytablehead = document.getelementbyid('headers'); var rowcount = mytablehead.rows.length; var colcount = mytablehead.getelementsbytagname("tr")[0].getelementsbytagname("th").length; var excelapp = new activexobject("excel.application"); var excelsheet = new activexobject("excel.sheet"); excelsheet.application.visible = true; for(var i=0; i<rowcount; i++) { for(var j=0; j<colcount; j++) { str= mytablehead.getelementsbytagname("tr")[i].getelementsbytagname("th")[j].innerhtml; excelsheet.activesheet.cells(i+1,j+1).value = str; } } } and same thing <tbody> tag.
edit: highly recommend using jquery. shorten to:
function write_to_excel() { var excelapp = new activexobject("excel.application"); var excelsheet = new activexobject("excel.sheet"); excelsheet.application.visible = true; $('th, td').each(function(i){ excelsheet.activesheet.cells(i+1,i+1).value = this.innerhtml; }); } now, of course, going give formatting issues can work out how want formatted in excel.
edit: answer question how n number of tables, jquery already. in raw javascript, grab tables , alter function able pass in table parameter. instance:
var tables = document.getelementsbytagname('table'); for(var = 0; < tables.length; i++) { write_headers_to_excel(tables[i]); write_bodies_to_excel(tables[i]); } then change function write_headers_to_excel() function write_headers_to_excel(table). change var mytablehead = document.getelementbyid('headers'); var mytablehead = table.getelementsbytagname('thead')[0];. same write_bodies_to_excel() or want set up.
Comments
Post a Comment