我想从Excel表中读取数据。目前,我选择了所有数据,然后选择了我需要的部分。我想知道这是一个好方法,因为数据文件中会有大约1000个零件号。如果有更好/更有效的方式,那会是什么?我尝试直接从Excel表中选择正确的列,但输出错误或错误System.IndexOutOfRangeException
。在底部,有一些我想要的代码,以防我当前的方法不好。
Excel表:
代码:
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());
}
}
}
输出:
1 2 3 4 五 6 7 8 9 10
我希望有类似的内容:(这不起作用)
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());
}
}
}
答案 0 :(得分:0)
如果您有列名并且需要列数据,则可以按如下方式修改代码:
string columnName = "335610";
OleDbCommand cmd = new OleDbCommand($"SELECT [{columnName}] FROM [Sheet1$]", connection);
using (OleDbDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
Debug.WriteLine(rdr.GetValue(0).ToString());
}
}