2017-07-27 56 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]


不管在代码的第一或第二线出现问题,我想你想检索字段根本没有你解决具体的行中存在。

相关问题