2011-07-04 2 views
0

다음 방법을 사용하여 테이블의 헤더 이름을 읽고 Excel에 넣습니다. 누구든지 헤더 정보와 데이터가있는 여러 테이블을 지원하기 위해이를 수정하는 방법을 알려줄 수 있습니까? 즉 전달 표 ID를 수정하는 방법 "headers"는 코드에서 "th"태그의 ID입니다.자바 스크립트 방법을 통해 다중 테이블 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; 
} 
} 

답변

0

귀하의 질문이 좀 모호 태그 이름으로 모든 TR 요소를 얻을 수 있습니다, 그래서 당신이 원하는 것을 추측하고있다. 그 새를 만드는 것이지만,

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

그런 다음 각 테이블에 대해 한 번 전화 : 현재 기능은 그대로 작동 가정하면, 당신은 단지 테이블의 ID의 하드 코딩을 꺼내 매개 변수로에 전달할 수 있습니다 각 테이블에 대한 ExcelSheet.

모든 ExcelSheet에 테이블을 추가하려는 경우 테이블 ID 배열을 다음과 같은 함수에 전달할 수 있습니다. 귀하의 함수의 기본 구조는 유지했지만 변수 선언을 루프 밖으로 옮겼습니다 (JavaScript가 장면 뒤에 있기 때문에) ExcellApp 변수가 사용되지 않아 삭제되었으며 getElementsByTagName 호출이 내부 루프.

write_headers_to_excel(["headers1","headers3","headers7","etc"]); 

function write_headers_to_excel(tableIDs) { 
    var myTableHead, 
     rowCount, 
     cols, 
     t, 
     i, 
     j, 
     rowOffset = 1, 
     ExcelSheet = new ActiveXObject("Excel.Sheet"); 

    ExcelSheet.Application.Visible = true; 

    for (t=0; t < tableIDs.length; t++) { 
     myTableHead = document.getElementById(tableIDs[t]); 
     rowCount = myTableHead.rows.length; 

     for(i=0; i<rowCount; i++) { 
     cols = myTableHead.rows[i].getElementsByTagName("th"); 
     for(j=0; j < cols.length; j++) { 
      ExcelSheet.ActiveSheet.Cells(i+rowOffset,j+1).Value = cols[j].innerHTML; 
     } 
     } 
     rowOffset += rowCount; 
    } 
} 

는 (아니, 나는 그것을 테스트하지 않았습니다.) 내 HTML 페이지에 여러 테이블이

+0

. 각 테이블을 Excel 파일로 내보내려고합니다. 그래서 나는 그 기능을 사용하고 있었다. 내 테이블 형식으로되어

.. TD ...
. 그렇다면 어떻게 함수에 tableid를 보내도록 코드를 수정해야합니까? – user755043

+0

여러 테이블을 하나의 Excel 파일이나 테이블 당 하나의 파일로 내보낼 지 여부는 아직 명확하지 않지만 내 대답에 모두 설명되어 있습니다. 첫 번째 짧은 코드 예제는 함수에 문자열을 전달하여 호출 할 매개 변수를 정의합니다. write_headers_to_excel ("headers");'두 번째 큰 코드 블록에는 이미 문자열 배열을 전달하는 예제가 있습니다. . – nnnnnn

+0

테이블 당 하나의 파일이 필요합니다. 짧은 코드에서 매개 변수로 tableId를 전달했습니다. 괜찮아. 하지만 어떻게 테이블 id를 사용하여 thead와 tbody 태그의 행 길이를 얻는가? 내 코드에서 만약 내가 이렇게 한 것처럼 테이블을 하나만 가지고 있다면 var myTableHead = document.getElementById ('headers'); var rowCount = myTableHead.rows.length; . 이제 u가 tableid를 통과하면 어떻게해야합니까? – user755043

0

당신은

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 
      } 

     } 
관련 문제