我必须阅读一个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文件中的值它只显示零...帮助!!!!!!
答案 0 :(得分:1)
对.Cells()
的来电预计RowIndex
后跟ColumnIndex
。常见的命名做法建议x
引用列,y
引用行。如果那是对的,那么你就是以错误的顺序传递你的论点。它应该是:
var data = excel_sheet.Cells(y, x).Value;
我不禁注意到其他一些问题:
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);
}