显示车速表上的输出

时间:2013-06-25 19:43:41

标签: html excel jscript

我必须阅读一个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文件的值在车速表上..

函数检查文件(sender)用于验证   函数readdata(x,y)用于读取excel文件   函数drawWithInputValue()用于手动输出..比如,假设您在文本名称“txtspeed”中输入了40值,然后在单击“绘制”按钮时,它将通过旋转谜语在速度表中显示值

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

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

1 个答案:

答案 0 :(得分: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);
}