1

ネットで見つけたコードのこの特定の部分を使用しています。これを実装しようとしています。このJavaScriptは、htmlテーブルに表示されたテーブルの値を取得し、それをExcelシートに変換します。

しかし、なんらかの理由で、コードの以下の部分が機能していません。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>
4

2 に答える 2

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) にタイプミスがあるだけです。そして、エラーはありませんか?ただし、このコードを使用すると、行内のセルを参照するという恐ろしいハックを取り除くことができます。また、「オブジェクト」ではなく「ワークブック」が開きます。

于 2012-08-06T10:16:57.210 に答える
1

どこにExcelシートを保存しますか、または少なくともExcelシートを開きますか?Wampサーバーでこのコードを試していますが、ボタンをクリックしても何のアクションもありません。何かが起こったかどうかを確認するにはどうすればよいですか?

于 2012-08-06T20:30:55.263 に答える