2017-07-27 52 views
0

嘿傢伙有一個非常簡單的數據表,這是由該通過Excel中輸入:無法將數據表值分配到字符串

cmdExcel.CommandText = "SELECT * From [" + SheetName + "A:B]"; 
oda.SelectCommand = cmdExcel; 
oda.Fill(dt); 

我不使用任何頭,所以列的名稱是默認的 - F1和F2。問題是,我無法將第二列的任何值賦給變量。但是第一個值可以正確分配。

string firstColumn = dt.Rows[1]["F1"] as string; 
string secondColumn = dt.Rows[1]["F2"] as string; 

我連着屏幕,在這裏你可以看到,什麼是數據表。在firstColumn中存儲「ABC」,沒關係,但secondColumn的值爲空。這應該很容易,但這裏有些不對勁,我不知道是什麼。你可以幫我嗎?

Attached image

+0

'dt.Rows [1] [「F2」]'的**確切**值是什麼? dt.Rows [1] [「F2」]。GetType()。FullName'返回什麼? –

+0

它可能是一個int - dont'''作爲字符串''' – user230910

+0

它返回double,所以這就是問題所在。謝謝馬克。我只是認爲,如果它是由excel導入的,並且dt是自動創建的,則所有單元格將是相同類型的字符串。 – btsm

回答

0

明確將其轉換爲Int32,而不是字符串象下面這樣:

int secondColumn = Convert.ToInt32(dt.Rows[1]["F2"]); 

你的屏幕截圖顯示了它作爲整數值。所以如果你把它轉換爲整數,它應該可以工作。

+0

你就是這樣。謝謝。 – btsm

1
dt.Rows[1]["F1"] 

這似乎是矛盾的。

  • dt.Rows[1]檢索第二行文檔
  • "F1"的可以在第一行該文檔中找到。

然而,你聲稱第一分配工作。對我來說這似乎很奇怪(Excel不使用基於0的索引),但我會假設你知道你在說什麼。

這確實意味着其他分配沒有意義。

dt.Rows[1]["F2"] 

如果你聲稱dt.Rows[1]["F1"]被檢索,然後我希望場F2要在dt.Rows[2]發現,不dt.Rows[1]


不管在代碼的第一或第二線出現問題,我想你想檢索字段根本沒有你解決具體的行中存在。

相關問題