无法将数据表值分配到字符串

时间:2017-07-27 12:11:29

标签: c# asp.net

嘿伙计们有一个非常简单的数据表,这是通过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值为null。应该很容易,但这里有些不对劲我不知道是什么。你能救我吗?

Attached image

2 个答案:

答案 0 :(得分:1)

dt.Rows[1]["F1"]

这似乎是矛盾的。

  • dt.Rows[1]检索文档的第二行
  • "F1"可以在文档的第一个行找到。

但是,您声称第一次分配有效。这对我来说似乎很奇怪(Excel不使用基于0的索引),但我会假设你知道你在说什么。

这确实意味着另一个分配没有意义。

dt.Rows[1]["F2"]

如果您声称已检索到dt.Rows[1]["F1"],那么我希望在dt.Rows[2]上找到字段 F2 ,而不是dt.Rows[1]

无论问题是出现在第一行代码还是第二行代码中,我认为您尝试检索的字段并不存在于您正在处理的特定行中。< / p>

答案 1 :(得分:0)

明确地将其强制转换为Int32而非下面的字符串:

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

您的屏幕截图显示为整数值。因此,如果你将它转换为整数,它应该可以工作。