2010-04-09 45 views
0

我有一個允許用戶導入電子表格的表單。當涉及到列標題時,此電子表格通常是靜態的,但現在用戶希望能夠包含可選列(稱爲Notes)。當我嘗試從電子表格讀取列時,我的代碼崩潰,如果它不存在。導入電子表格,但遇到問題

 Dim objCommand As New OleDbCommand() 
     objCommand = ExcelConnection() 'function that opens spreadsheet and returns objCommand 

     Dim reader As OleDbDataReader 
     reader = objCommand.ExecuteReader() 

     While reader.Read() 
      Dim Employee As String = Convert.ToString(reader("User")) 
      Dim SerialNUM As String = Convert.ToString(reader("serialno")) 
      **Dim Notes As String = Convert.ToString(reader("notes"))** 

如果電子表格包含Notes列,則一切順利。如果沒有,崩潰。如何檢查電子表格中是否存在Notes列以避免崩潰?

回答

1

更改代碼是這樣的: [編輯 - 改變代碼邏輯)

Dim fieldCount = reader.FieldCount 
For i = 0 To fieldCount - 1 
Dim colName = reader.GetName(i) 
If (colName = "notes") Then 
    Dim Notes As String = reader.GetString(i) 
End If 
Next i 
+0

謝謝你的答案。 GetOrdinal(「Notes」)仍然拋出一個錯誤,如果該列不存在,但reader.GetName(4)=「Notes」工作正常..只要客戶確保Notes列在正確的位置。 – 2010-04-09 20:25:13

+0

@Chris,我改變了我的例子的邏輯。這樣你迭代列,並檢查它們是否匹配你想要的東西,而不是假設列存在。 – 2010-04-10 07:59:41

1

也許OleDbDataReader.FieldCount可以幫助您編程一個解決方法。

+0

雙方你讓我direction..thank找對了你! – 2010-04-09 20:25:51