在OleDBCommand中从excel中选择2个命名范围

时间:2012-08-28 20:00:41

标签: c# excel oledb

以下是我的代码:

OleDbCommand cmd1 = new OleDbCommand("SELECT * FROM Id, Number", cn);
OleDbDataReader reader = cmd1.ExecuteReader();
while( reader.Read() )
{
    results.Add((int)reader["Id"], (int)reader["Number"]);
}

Id和Number是我的excel文件中的命名范围。我正在尝试使用此查询的结果返回dictionary<int, int>

问题是,行reader["Id"]正在抛出异常。当我调试结果集时,我可以看到它具有Id的正确值。我是否错误地检索数据?

加分:我还需要只返回Number不为空的行。我希望我可以将where Number is not null添加到OldDbCommand,但这也引发了异常。

你们可以看到我在这里做错了吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

David W的评论是正确的。我无法投入相同的路线。此外,调用reader["Id"]无效。替换为Reader[0],一切都很好。

OleDbCommand cmd1 = new OleDbCommand("SELECT * from Number, Id", cn);
OleDbDataReader reader = cmd1.ExecuteReader();

while( reader.Read() )
{
   var Number= reader[0];
   var Id = reader[1];

   if(Id == DBNull.Value || WoNumber == DBNull.Value)
   {
       break;
   }

   results.Add(Convert.ToInt32(Id), Convert.ToInt32(Number));
}