这是我写的代码。但是只能对没有合并的单元格有效。例如 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;
}
}
}
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;
}
}
}
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;
}试试这个
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;
}
}
我们公司的项目就是这样做的
页面上有合并的在模版上也合并
直接找到位置填值就可以了,其它的都不用管