当我尝试使用OLEDbDataReader
类从excel读取记录时,我无法按照我想要的任何顺序读取每行的列数据。它会将索引超出范围异常。
我拥有的列是FirstName,LastName,Salary。
OleDbDataReader oledbReader = oledbCmd.ExecuteReader();
// Doesn't display anything and throws "Index out of range exception".
MessageBox.Show(oledbReader["LastName"]);
如果我尝试按FirstName,LastName和Salary的顺序阅读,它可以工作,但我想以任何我想要的顺序阅读。这可能吗?
答案 0 :(得分:0)
您必须以这种方式编写选择查询:从表
中选择col1,col2,col3在特定条件下不使用select * from table this。
答案 1 :(得分:0)
我总是使用整数列索引从Excel读取,并且具有定义每列索引的枚举。例如......
MessageBox.Show(oleDbReader.GetValue(theColumnEnum.LastName))
答案 2 :(得分:0)
你可以按任何顺序阅读,试试这个:
using (OleDbDataReader reader = oledbCmd.ExecuteReader())
{
while (reader.Read())
{
a = reader.GetValue(0).ToString();
b = reader.GetValue(3).ToString();
c = reader.GetValue(4).ToString();
}
}
在这个例子中,我使用reader.GetValue(0).ToString();
因为我不知道值的类型,但如果你知道类型,你可以使用reader.GetInt32(0)和其他。