这是我写的代码。但是只能对没有合并的单元格有效。例如 html的 某个单元格colspan 为2 的话,这么一行的children就会少一个。但是excel里 并不是这样定义的,excel是跳过某个格的。如何处理?这里的代码 只能对没有合并的单元格有效
function outGrid(tablename){ var t=document.getElementById(tablename);
try{var appExcel = new ActiveXObject( "Excel.Application" );}catch(e){alert("请将本站点添加到浏览器的可信任站点");return;}
appExcel.Visible = true;
var wb = appExcel.Workbooks.Add();
var ws = wb.Worksheets(1); for(var i=0;i<t.children[0].children.length;i++){
for(var j=0;j<t.children[0].children[i].children.length;j++){
ws.Cells(i+1,j+1).value=t.children[0].children[i].children[j].innerText;
}
}
}

解决方案 »

  1.   

    function exportexcel(tablenid){
    var elTable = document.getElementById("tb");
    var oRangeRef = document.body.createTextRange();
    var table = document.getElementById(tablenid);
    oRangeRef.moveToElementText(table);
    oRangeRef.execCommand( "Copy" )

    var appExcel = new ActiveXObject( "Excel.Application" );
    appExcel.Visible = true;
    appExcel.Workbooks.Add().Worksheets.Item(1).Paste();
    appExcel = null;
    }试试这个
      

  2.   

    row=(row==null?table.rows.length:row);
    cell=(cell==null?table.rows(0).cells.length:cell); 
    for (i=0;i<row;i++) { 
    for (j=0;j<cell;j++) { 
    oSheet.Cells(i+1,j+1).value = table.rows(i).cells(j).innerText; 

    }
      

  3.   

    直接做个Excel模版,按页面的样式做不就得了
    我们公司的项目就是这样做的
    页面上有合并的在模版上也合并
    直接找到位置填值就可以了,其它的都不用管