2013-06-25 41 views
-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文件的值..

function checkfile(sender)用於驗證 函數readdata(x,y)用於讀取excel文件 函數drawWithInputValue()用於手動輸出..假設您在文本名稱中輸入了40個值「 txtspeed」然後點擊繪製按鈕它將通過旋轉niddle

功能drawWithexcelValue(VAL)爲讀取excel文件並顯示其輸出值顯示速度計的值..

這裏是問題..假設我們在excel文件中有一些名稱和值如下 名稱值 印度35 china 46 USA 73 所以現在通過點擊提交按鈕它必須顯示35第一和46和73的名稱..但根據我的代碼發生的事情是,當點擊提交按鈕時,它不顯示值從Excel文件中它只顯示零...幫助!!!!!!

+0

喔!!!! COM-在哪裏都是聰明的傢伙! !請幫我解決這個請 – user2502227

+1

請問一個問題。 – Jack

+0

我的代碼沒有顯示我正確的答案..請告訴我,我的錯在哪裏 – user2502227

回答

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); 
} 
+0

我欣賞你的代碼..我試過你對我說的話,但是輸出是一樣的我,例如。它顯示錯誤輸出是零..並鄰接斜線,我錯誤地寫在那裏,而編輯代碼爲此.. – user2502227