2012-08-06 5 views
1

내가 구현하려고하는 그물에있는 코드 의이 특정 부분을 사용하고 있습니다,이 자바 스크립트는 HTML 표에 표시되는 테이블의 값을 가져 와서 그것을 Excel로 변환합니다 시트.html 표 자바 스크립트에서 시트를 엑셀

그러나 알 수없는 이유로 아래 코드 부분이 작동하지 않습니다. IE에서만 사용할 수 있으며 아래 코드가 작동하지 않는 이유가 확실하지 않습니다. 누군가이 코드를 잘못 이해하고이 코드를 수정하는 방법을 알려줄 수 있습니까?

<html> 
    <head> 
    <script type="text/javascript"> 
     function write_to_excel() { 
     str=""; 
     var mytable = document.getElementsByTagName("table")[0]; 
     var row_Count = mytable.rows.length; 
     var col_Count = mytable.getElementsByTagName("tr")[0].getElementsByTagName("td").length; 

     var ExcelApp = new ActiveXObject("Excel.Application"); 
     var ExcelSheet = new ActiveXObject("Excel.Sheet"); 
     ExcelSheet.Application.Visible = true; 

     for(var i=0; i < row_count ; i++) 
     { 
      for(var j=0; j < col_Count; j++) 
      { 
      str= mytable.getElementsByTagName("tr")[i].getElementsByTagName("td")[j].innerHTML; 
      ExcelSheet.ActiveSheet.Cells(i+1,j+1).Value = str; 
      } 
     } 

     } 
    </script> 
    </script> 
    </head> 
    <body> 

    <input type="submit" value="Export to EXCEL" onclick="write_to_excel();"/> 

    <!-- ************************************************--> 
    <!--**** INSERT THE TABLE YOU WANT EXPORT HERE ****--> 
    <table><tr><td>First</td><td>second</td></tr></table> 
    <!-- *******************example given above****************--> 

    </body> 
</html> 
+0

문제의 원인이 아니지만 추가로 닫는 ''태그가 있습니다. –

+0

코드를 읽을 수 있도록 포맷해야합니다. 어떤 종류의 오류가 있습니까? – Niklas

+0

코드는 테이블을 Excel 시트로 전송해야합니다. 오류가 발생하지 않았습니다. 값이없는 빈 엑셀 시트가 열립니다. – sankar

답변

7

이 트릭을 수행합니다

function writeToExcel() { 
    var i, j, str, 
     myTable = document.getElementById('mytable'), 
     rowCount = myTable.rows.length, 
     excel = new ActiveXObject('Excel.Application');// Activates Excel 
    excel.Workbooks.Add(); // Opens a new Workbook 
    excel.Application.Visible = true; // Shows Excel on the screen 
    for (i = 0; i < rowCount; i++) { 
     for (j = 0; j < myTable.rows[i].cells.length; j++) { 
      str = myTable.rows[i].cells[j].innerText; 
      excel.ActiveSheet.Cells(i + 1, j + 1).Value = str; // Writes to the sheet 
     } 
    } 
    return; 
} 

원래 코드가 실제로 작동, for(i) -loop (row_count == undefined) 단지 오타가 있습니다. 그리고 오류가 없습니까? 그러나이 코드를 사용하면 행에서 셀을 참조하는 끔찍한 해킹을 없앨 수 있으며 "Object"대신 "Workbook"을 열 수 있습니다.

+0

안녕하세요 ..이 code.but를 사용하려고했는데 다음 error.ReferenceError가 표시됩니다. ActiveXObject가 정의되지 않았습니다. [Break On This Error ] \t 엑셀 = 새 ActiveXObject ('Excel.Application'); // Excel 활성화 –

+1

@DinoopNair (Un) fortenately'ActiveXObject()'는 IE에서만 사용 가능합니다.). – Teemu

1

어디에서 엑셀 시트를 저장합니까 아니면 최소한 엑셀 시트를 열 수 있습니까? 내 Wamp Server에서이 코드를 시도하고 버튼을 클릭 한 후에 아무런 반응이 없다. 어떤 일이 있었는지 어떻게 확인합니까?

+1

Upvoted ** 답변 **? @randomuser 코드에 몇 가지 주석을 추가했습니다. 코드에 저장 기능이 없으므로 새로 만든 통합 문서는 프로그래밍 방식으로 저장되지 않습니다. – Teemu

관련 문제