I would like to read data from an Excel table. At the moment, I select all of the data and then I select the part that I need. I'm wondering if this is a good approach, given that there will be about 1000 part numbers in the data file. If there is a better/more efficient way, what would that be? I tried directly selecting the correct column from the Excel table, but I got either the wrong output or the error System.IndexOutOfRangeException. At the bottom, there is the code that I would like to have in case my current method is not good.
Excel table:
Code:
using (OleDbConnection connection = new OleDbConnection(strConn))
{
    connection.Open();
    OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", connection);
    string partnumber = "Part1"; // this value will change depending on the operator's choice.
    using (OleDbDataReader rdr = cmd.ExecuteReader())
    {
        while (rdr.Read())
        {
            Debug.WriteLine(rdr[partnumber].ToString());
        }
    }           
}
Output:
1 2 3 4 5 6 7 8 9 10
I would like to have something like: (this doesn't work)
using (OleDbConnection connection = new OleDbConnection(strConn))
{
    connection.Open();
    OleDbCommand cmd = new OleDbCommand("SELECT [@partNumber] FROM [Sheet1$]", connection);
    string partnumber = "Part1";
    cmd.Parameters.AddWithValue("@partNumber", partnumber);
    using (OleDbDataReader rdr = cmd.ExecuteReader())
    {
        while (rdr.Read())
        {
            Debug.WriteLine(rdr[xxx].ToString());
        }
    }           
}

 
    