-1

我必须阅读 Excel 文件并在速度计上显示输出。我接受了输入,这是我的 HTML 和脚本代码,Excel 文件包含名称和值:

<input type="text" id="txtSpeed" name="txtSpeed" value="20" maxlength="2" />
<input type="button" value="Draw" onclick="drawWithInputValue();">
<input type="file" id="file" onchange="checkfile(this);" />
<input type="button" id="btnSubmit" onclick="readdata(1, 2)" value="Submit" />
function checkfile(sender) {
    var validExts = new Array(".xlsx", ".xls", ".csv");
    var fileExt = sender.value;
    fileExt = fileExt.substring(fileExt.lastIndexOf('.'));
    if (validExts.indexOf(fileExt) < 0) {
        alert("Invalid file selected, valid files are of " +
           validExts.toString() + " types.");
        return false;
    }
    else return true;
}

function readdata(x,y) {
    try {
        var excel = new ActiveXObject("Excel.Application");
        excel.Visible = false;
        var excel_file = excel.Workbooks.Open("D:\\Test.xls");
        \\  alert(excel_file.worksheets.count);
        var excel_sheet = excel_file.Worksheets("Sheet1");
        var data = excel_sheet.Cells(x, y).Value;
        //alert(data);
        drawWithexcelValue(data);
    }
    catch (ex) {
        alert(ex);
    }
    //    return data;
}

对于车速表,这里是代码

function drawWithInputValue() {
    var txtSpeed = document.getElementById('txtSpeed');
    alert(txtSpeed.value);
    if (txtSpeed !== null) {
        iTargetSpeed = txtSpeed.value;
        // Sanity checks
        if (isNaN(iTargetSpeed)) {
            iTargetSpeed = 0;
        } else if (iTargetSpeed < 0) {
            iTargetSpeed = 0;
        } else if (iTargetSpeed > 80) {
            iTargetSpeed = 80;
        }
        job = setTimeout("draw()", 5);
    }
}

function drawWithexcelValue(val) {
    var txtSpeed = val;
    if (txtSpeed !== null) {
        iTargetSpeed = txtSpeed.value;
        // Sanity checks
        if (isNaN(iTargetSpeed)) {
            iTargetSpeed = 0;
        } else if (iTargetSpeed < 0) {
            iTargetSpeed = 0;
        } else if (iTargetSpeed > 80) {
            iTargetSpeed = 80;
        }
        job = setTimeout("draw()", 5);
    }
}

所以我得到了文件excel文件,通过这个excel文件,值应该显示在速度表上。但是当点击提交按钮时,速度表的中间值下降到0..它没有在速度表上显示excel文件的值。 .

功能 checkfile(sender) 用于验证功能 readdata(x,y) 用于读取 excel 文件功能 drawWithInputValue() 用于手动输出..like ,假设您在文本名称“txtspeed”中输入了 40 值然后打开单击绘图按钮,它将通过旋转中间显示速度表中的值

函数 drawWithexcelValue(val) 用于读取 excel 文件并在输出中显示其值..

这是问题..假设我们在excel文件中有一些名称和值,如下所示名称值印度35中国46美国73所以现在点击提交按钮它必须首先显示35,然后显示46和73名称..但是根据我的代码发生的情况是,单击提交按钮时,它不显示 excel 文件中的值,它只显示零...帮助!!!!!!

4

1 回答 1

1

.Cells()对期望的调用RowIndex后跟ColumnIndex. 常见的命名习惯建议x指的是列,而y指的是行。如果这是正确的,那么您以错误的顺序传递参数。它应该是:

var data = excel_sheet.Cells(y, x).Value;

我不禁注意到其他一些问题:

  • 您的评论之一使用反斜杠而不是斜杠。这将导致语法错误。
  • 您永远不会使用文件输入 - excel 文件的路径是硬编码的。
  • 您正在将一个值传递给drawWithexcelValue(),但随后您尝试访问一个value属性。也许您认为您正在传递对单元格的引用?
  • 您正在传递一个字符串setTimeout()而不是函数引用。从技术上讲,这是合法的,但这是老派。
  • 您的drawWithXValue()功能几乎相同。您应该创建一个共享通用功能的函数:
function drawWithValue(val) {
    iTargetSpeed = val || 0;
    if (iTargetSpeed < 0) {
        iTargetSpeed = 0;
    } else if (iTargetSpeed > 80) {
        iTargetSpeed = 80;
    }
    job = setTimeout(draw, 5);
}
function drawWithInputValue() {
    drawWithValue(document.getElementById('txtSpeed').value);
}

或者,更简洁一点:

function drawWithValue(val) {
    iTargetSpeed = Math.max(0, Math.min(80, val || 0));
    job = setTimeout(draw, 5);
}
于 2013-06-25T22:00:52.297 回答