2014-01-08 2 views
0

아래 코드는 Excel에서 부분 변환까지 Excel에서 작동합니다.excel (xls) 파일을 html로 변환하고 정렬 및 필터링을 추가하는 방법

헤더 (또는 첫 번째 행)의 셀을 클릭하면 전체 테이블이 해당 열 (오름차순 또는 내림차순)을 기준으로 으로 정렬되어야합니다.

참고 : 아래 코드는 IE9의 인터넷 옵션에서 엑셀 입력 파일 및 activex 지원 설정을 사용하여 테스트되었습니다.

<HTML> 
    <HEAD> 
     <TITLE>Test</TITLE> <script type="text/javascript" src="../jquery-latest.js"></script> 
    <script type="text/javascript"> 

    </script> 

    <STYLE TYPE="text/css">body div * { font-family: Verdana; font-weight: normal; font-size: 10px; } body { background-color: #FFEEFF; } .tableContainer table { border: 0px solid #000000; } .tblHeader { font-weight: bold; text-align: center; background-color: #FFAAEE; color: black; } .oddRow, .evenRow { vertical-align: top; } .tblHeader td, .oddRow td, .evenRow td { border-left: 2px solid #FFFFFF; border-bottom: 0px solid #000000; border-top: 0px solid #000000;} .lastCol { border-right: 0px solid #000000; } .oddRow { background-color: #abcdef; } .evenRow { background-color: #f0f0f0; }</STYLE> 
    <script LANGUAGE="JavaScript"> 

     function _ge(id) { 

       return document.getElementById(id); 
     } 

     function sortTable(){ 
      var tbl = document.getElementById("tblExcel2Html").tBodies[0]; 
      var store = []; 
      //alert(tbl.rows.length); 
      for(var i=0, len=tbl.rows.length; i<len; i++){ 
       var row = tbl.rows[i]; 
       //alert(row.cells[1].innerText); 
       var sortnr = parseFloat(row.cells[1].textContent || row.cells[1].innerText); 
       if(!isNaN(sortnr)){ 
        alert(store.push([sortnr, row])); 
        //store.push([sortnr, row]); 
       } 
      } 
      store.sort(function(x,y){ 
       //alert(x[0] - y[0]); 
       return x[0] - y[0]; 
      }); 
      //alert(store.length); 
      for(var i=0, len=store.length; i<len; i++){ 
       alert(tbl.appendChild(store[i][1])); 
       //alert(tbl.appendChild(store[i][1])); 
      } 

      //alert(store); 
      store = null; 
     } 

     function convert2HTML() { 

      var ex; 
      try { 
       ex = new ActiveXObject("Excel.Application"); 
      } 
      catch (e) 
      { 
       alert('Your browser does not support the Activex object.\nPlease switch to Internet Explorer.'); 
       return false; 
      } 

      //alert(arraytext); 

      //var ef = ex.Workbooks.Open("D:\\JS_HTML5\\Vin\\Test.xlsx"); 

      var ef = ex.Workbooks.Open("D:\\JS_HTML5\\docs\\filter4\\tests\\Test.xlsx"); 

      var es = ef.Worksheets(1); 

      var colsCount = ef.Worksheets(1).UsedRange.Columns.Count; 
      //alert(colsCount); 
      var rowsCount = ef.Worksheets(1).UsedRange.Rows.Count; 
      //alert(rowsCount); 

      var rStart = parseInt(1,10); 
      var cStart = parseInt(1,10); 

      var cEnd = parseInt(colsCount,10); 
      var rEnd = parseInt(rowsCount,10); 

       var oc = _ge('tableContainer'); 

      oc.innerHTML = ''; 
      var tbl = document.createElement('TABLE'); 
      tbl.id = 'tblExcel2Html'; 

      tbl.border = '10'; 
      tbl.cellPadding = '4'; 
      tbl.cellSpacing = '0'; 

      oc.appendChild(tbl); 
      var i,j,row,col,r,c; 

      for(i = rStart, r = 0; i <= rEnd; i++,r++) { 

       row = tbl.insertRow(r); 
       row.className = (i == rStart) ? 'tblHeader' : (i % 2 == 0) ? 'evenRow' : 'oddRow'; 

       for(j = cStart, c = 0; j <= cEnd; j++,c++) { 

        col = row.insertCell(c); 
        col.className = (j == cEnd) ? 'lastCol' : ''; 
        col.innerHTML = es.Cells(i,j).value || ' '; 

       } 
      } 
      ex.ActiveWorkbook.Close(true); 
      ex.Application.Quit(); 
      ex = null; 

      sortTable(); 
     } 

    </script> 
</HEAD> 
<BODY onload = "convert2HTML()"> 
<h2>Test</h2> 
<hr><br> 

<!--  <td colspan="6" align="CENTER"><INPUT TYPE="button" VALUE="Convert to HTML" ONCLICK="convert2HTML()"></td> --> 

<div id="tableContainer"></div> 
<div id="tblExcel2Html"></div> 
<footer> 
    <br> 
      <center> &copy;Initial Draft V0.1  </center> 
</footer> 
<a href="Home.html" >Home</a> 
</BODY> 
기본적으로 내가 정렬 및 필터링 지원 HTML로 Excel을 변환 할.

ex = new ActiveXObject("Excel.Application"); 

를 호출하여 사전에

감사 Vinoth.S

+0

무엇이 당신의 질문입니까? 무엇이 작동하지 않습니까? 너 뭐 해봤 니? – Doon

+0

기본적으로 나는 HTML로 정렬 및 필터링 지원과 함께 HTML로 변환 싶습니다. 위의 내가 성공적으로 HTML로 Excel로 변환 할 수 있지만 정렬 및 필터링에 갇혀있다. – user2960256

+0

하지만 무엇을 시도 했습니까? 오류 메시지는 무엇입니까? 어디서 붙어 있니? 정렬 (예를 들어 Jquery 테이블 분류기) 처리하기 위해 모든 플러그인을 사용하여 보셨나요 – Doon

답변

0

객체의 생성은 Excel이 설치된 Windows 시스템에서만 작동합니다. 나는 jqgrid을 javascript 데이터 뷰어로 사용하고 phpexcel과 같은 PHP 라이브러리는 Excel을 구문 분석하고 원시 데이터를 반환하는 것이 좋습니다.

+0

모든 솔루션/답변? – user2960256

+0

phpexcel + jqgrid를 사용해 보셨습니까? – bonfa53