通过javascript方法支持多个表ID

时间:2011-07-04 05:25:23

标签: javascript html

我使用以下方法读取表中的标题名称并放入excel。任何人都可以让我知道如何修改它以支持带有标题信息和数据的多个表。 即如何修改以传递表id。 “headers”是代码中“th”标记的id。

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;
}
 }

2 个答案:

答案 0 :(得分:0)

您可以按标签名称

获取所有tr元素
var rows = document.getElementsByTagName('tr');// get all rows of all tables 

 var table=0, TableRow=0;

        for (i = 0; i < rows.length; i++) {

            row = rows[i];

            if (row.parentNode.tagName != 'THEAD' && row.parentNode.tagName != 'thead') {
                  table=table+1;
               // do something here for headers
            } else if (row.parentNode.tagName != 'TBODY' && row.parentNode.tagName != 'tbody')        
               {
                TableRow=TableRow+1;
              //do something here for rows
            }

        }

答案 1 :(得分:0)

你的问题有点模糊,所以我猜你想要什么。假设您当前的函数按原样运行,您可以取出表ID的硬编码并将其作为参数传递:

function write_headers_to_excel(tableID)  {
   var myTableHead = document.getElementById(tableID);
   // rest of your function as is
}

然后为每个表调用一次,但这将为每个表创建一个新的ExcelSheet。

如果想要将所有表添加到同一个ExcelSheet中,则可以将表ID的数组传递给函数,如下所示。我保留了函数的基本结构,但是将变量声明从循环中移出(因为JavaScript无论如何都在幕后工作),删除了ExcellApp变量,因为它没有被使用,并移动了{ {1}}调出内循环。

getElementsByTagName

(不,我还没有测试过。)