如何在C#.net中以任何顺序使用oledbdatareader从excel中只读取几列?

时间:2012-08-18 14:12:07

标签: c# excel oledb

当我尝试使用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的顺序阅读,它可以工作,但我想以任何我想要的顺序阅读。这可能吗?

3 个答案:

答案 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)和其他。