【问题标题】:Show the output on the speedometer [closed]在车速表上显示输出[关闭]
【发布时间】:2013-06-25 19:43:41
【问题描述】:

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

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

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

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

【问题讨论】:

  • ohh!!!com-on 所有聪明人都在哪里!!!请帮我解决这个问题
  • 请提问。
  • 我的代码没有显示正确答案..请告诉我哪里错了
  • 您需要提供更多关于问题出在何处的详细信息,也许还需要提供一些具体示例来说明问题所在。您只需稍作调试即可使其成为一个清晰简洁的问题。
  • @jack 请帮助布拉达!!!!

标签: html excel jscript


【解决方案1】:

.Cells() 的调用需要RowIndex,后跟ColumnIndex。常见的命名实践建议x 指代列,y 指代行。如果这是正确的,那么您以错误的顺序传递参数。应该是:

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

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

  • 您正在为您的一个 cmets 使用反斜杠而不是斜杠。这将导致语法错误。
  • 您从不使用文件输入 - 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);
}

【讨论】:

  • 我很感激你的代码..我试过你对我说的话,但输出是一样的,即它显示错误的输出为零..并且邻接斜杠,我在编辑此代码时错误地写在那里..
猜你喜欢
  • 2022-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-06
  • 1970-01-01
  • 2021-12-06
  • 1970-01-01
相关资源
最近更新 更多