在Javascript代码中重复元素

时间:2014-04-07 15:47:13

标签: javascript html excel hta

我创建了一个连接到excel文件的.hta表单。输入的数据将粘贴到电子表格中。我有这个代码的两个问题,我似乎无法弄清楚我做错了什么。

<html>
<head>
    <script>
        function test() {
            var excel = new ActiveXObject("Excel.Application");
            excel.visible = true;
            var wb = excel.Workbooks.Open("C:\\Users\\Dane\\Desktop\\1.xlsx");
            var optionValue;
            var s = Form1.select1;
            var data = [];
            var sCell = wb.sheets("sheet1").cells(1,1).currentregion.offset(1);

            data.push(Form1.text1.value);
            data.push(Form1.text2.value);
            data.push(Form1.text3.value);
            data.push(Form1.text4.value);
            data.push(s.options[s.selectedIndex].text);
            data.push(Form1.text5.value);
            data.push(Form1.text6.value);
            data.push(Form1.text7.value);


            for(var i=0;i<Form1.option1.length;i++) {
                if(Form1.option1[i].checked){
                    data.push(Form1.option1[i].value);
                    break;
                }
            }

            for(var i=0; i<data.length;i++) {
                sCell.offset(0,i) = data[i];            
            }



            for(var i=0;i<Form1.option2.length;i++) {
                if(Form1.option2[i].checked){
                    data.push(Form1.option2[i].value);
                    break;
                }
            }

            for(var i=0; i<data.length;i++) {
                sCell.offset(0,i) = data[i];            
            }

            wb.close(true);
        }
    </script>
</head>
<body>
<form name="Form1">

    <p>
    Entry 1: <input name="text1" type="text" size="10" /><br />
    Entry 2: <input name="text2" type="text" size="10" /><br />
    Entry 3: <input name="text3" type="text" size="10" /><br />
    Entry 4: <input name="text4" type="text" size="10" /><br />

    Selection 1: <select name="select1">
        <option value="1">A</option>
        <option value="2">B</option>
        <option value="3">C</option>
        <option value="4">D</option>
        <option value="5">E</option>
        <option value="6">F</option>
    </select> <br />

    Entry 5: <input name="text5" type="text" size="10" /><br />
    Entry 6: <input name="text6" type="text" size="10" /><br />
    Entry 7: <input name="text7" type="text" size="10" /><br />

    Question 1<br />
    Yes : <input type="radio" name="option1" value="Yes"><br />
    No : <input type="radio" name="option1" value="No"><br />
    N/A : <input type="radio" name="option1" value="N/A"><br />

    Question 2<br />
    Yes : <input type="radio" name="option2" value="Yes"><br />
    No : <input type="radio" name="option2" value="No"><br />
    N/A : <input type="radio" name="option2" value="N/A"><br />


    <input type="button" value="Save to Excel" onclick="test()" />
</form>
</body>

问题:

  1. 最后一个单选按钮值在电子表格的末尾重复几次。
  2. 当用户第二次使用该程序时,将覆盖先前的数据。
  3. 要下载的示例(确保更改文件路径):

1 个答案:

答案 0 :(得分:0)

我认为第二个问题是因为这是你的代码中的两次:

for(var i=0; i<data.length;i++) {
            sCell.offset(0,i) = data[i];            
        }

获得数据后,您不必再循环两次。

对于第一个问题,我相信它是由这一行创建的:

var sCell = wb.sheets("sheet1").cells(1,1).currentregion.offset(1);

你实际上在说“在这里选择这个地区”“从这个地区开始。”不幸的是,我不知道你需要的代码,但这是我的解释。