可以的 ,把表格的代码取出来 , 另存为html不就可以了
解决方案 »
- 搜索引擎可以看到,但用户无法看到怎么实现
- JS解析XML (childNodes.length问题)
- 再此基础上加个简单的验证,谢谢。
- javascript删除javascript生成的html代码
- 请教一个关于ligthbox的问题!
- javascript如何实现页间传值
- 有时间给看看这个问题http://space.cnblogs.com/question/2966/
- 当鼠标移到某个单元格的时候,怎么让单元格的背景更换颜色?
- 右键的事件是什么?
- 为什么history.back()会将前一屏清空?
- javascript里有没有这样的触发事件
- 标签ID相同,值不同!怎么得到不同的值!javascript
// 生成Excel文件并保存
// 输入参数:
// formName:要生成的数据所在的form名称
// tableName:要生成的数据所在的table名称
//----------------------------------------------------------
function exportexcel(formName,tableName){
var oXL = new ActiveXObject("Excel.Application");
oXL.Visible = true;
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var div1=document.all.item(formName);
var table1=div1.all.item(tableName);
var table=new Array(); var retArr = getTableRowsCols(table1);
var rlen=retArr[0];
var clen=retArr[1];
var flagTable=new Array(rlen);
for(var i=0;i<rlen;i++){
flagTable[i]=new Array(clen);
for(var j=0;j<clen;j++){
flagTable[i][j]=0;
}
} var rowBegin=1, colBegin=1; //导出的表格的起始位置
var c1=oSheet.Cells(rowBegin,colBegin);
var c2=oSheet.Cells(rlen+rowBegin-1,clen+colBegin-1);
oSheet.Range(c1,c2).VerticalAlignment = -4108;
oSheet.Range(c1,c2).HorizontalAlignment = -4108;
exportTable(oSheet, flagTable, table1, rowBegin, colBegin);
oSheet.Range(oSheet.Cells(rowBegin,colBegin),oSheet.Cells(rlen+rowBegin-1,clen+colBegin-1)).EntireColumn.AutoFit();
oXL.UserControl = true;
oXL.Quit();
}//返回当前表格的行数和列数
//参数:objTable, 表格对象
//返回:retArr, retArr[0], 行数;retArr[1], 列数
function getTableRowsCols(objTable)
{
var rowCnt=0, colCnt=0;
for (var i=0; i<objTable.rows.length; i++) {
var row = objTable.rows[i]; //当前行
var rowRows=1, rowCols=0; //当前行的初始行数和列数
for (var j=0; j<row.cells.length; j++) {
var cell = row.cells[j]; //当前单元格
if (cell.firstChild !=null && cell.firstChild.tagName == "TABLE") {
var inRetArr = getTableRowsCols(cell.firstChild);
rowCols +=inRetArr [1];
rowRows = rowRows<inRetArr[0] ? inRetArr[0] : rowRows;
} else { //不是表格
rowCols += parseInt(cell.colSpan);
rowRows = rowRows<parseInt(cell.rowSpan) ? parseInt(cell.rowSpan) : rowRows;
}
}
colCnt = colCnt<rowCols ? rowCols : colCnt;
rowCnt += rowRows;
}
var retArr = new Array();
retArr[0] = rowCnt;
retArr[1] = colCnt;
return retArr;
}//导出表格
function exportTable(oSheet, flagTable, objTable, rowBegin, colBegin){
var flagRow=0, flagCol=0; //跟踪当前的表示表中的相对位置
for(var i=0; i<objTable.rows.length; i++) {
var row = objTable.rows[i]; //当前行
flagCol = 0;
var subTableRows = 1; //当前行若有表格,则记录其中最大的行数
for (var j=0; j<row.cells.length; j++) {
while (flagTable[rowBegin-1+flagRow][colBegin-1+flagCol]==1) {
flagCol++;
}
var cell=row.cells[j]; //当前单元格
if (cell.firstChild !=null && cell.firstChild.tagName == "TABLE") {
var retArrRows = getTableRowsCols(cell.firstChild)[0];
subTableRows = subTableRows<retArrRows ? retArrRows : subTableRows;
exportTable(oSheet, flagTable, cell.firstChild, rowBegin+flagRow, colBegin+flagCol);
} else {
oSheet.Cells(rowBegin+flagRow, colBegin+flagCol).Font.Bold=1;
var rs=parseInt(cell.rowSpan);
var cs=parseInt(cell.colSpan);
oSheet.Cells(rowBegin+flagRow, colBegin+flagCol).NumberFormatLocal="@";
oSheet.Cells(rowBegin+flagRow, colBegin+flagCol).Value = cell.innerText;
oSheet.Range(oSheet.Cells(rowBegin+flagRow, colBegin+flagCol),oSheet.Cells(rowBegin+flagRow+rs-1,colBegin+flagCol+cs-1)).MergeCells = 1;
//填写当前单元格在标志表格中的标志
for(var k=0; k<rs; k++) {
for(var l=0; l<cs; l++) {
flagTable[rowBegin-1+flagRow+k][colBegin-1+flagCol+l]=1;
}
}
}
flagCol =flagCol + cs - 1; //加速标志表格的列的移动,因为当前表格已经标识了cs个标志单元
}
flagRow += subTableRows;
}
}