OleDbDataReader Excel 数据到 C#
OleDbDataReader Excel data to C#
我想从 Excel table 中读取数据。目前,我 select 所有数据,然后 select 我需要的部分。我想知道这是否是一个好方法,因为数据文件中将有大约 1000 个零件号。如果有一种 better/more 有效的方法,那会是什么?我尝试直接 select 从 Excel table 中输入正确的列,但我得到了错误的输出或错误 System.IndexOutOfRangeException
。在底部,有我想要的代码,以防我当前的方法不好。
Excel table:
代码:
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个
5个
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());
}
}
}
如果你有列名,需要列数据,可以修改你的代码如下:
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());
}
}
我想从 Excel table 中读取数据。目前,我 select 所有数据,然后 select 我需要的部分。我想知道这是否是一个好方法,因为数据文件中将有大约 1000 个零件号。如果有一种 better/more 有效的方法,那会是什么?我尝试直接 select 从 Excel table 中输入正确的列,但我得到了错误的输出或错误 System.IndexOutOfRangeException
。在底部,有我想要的代码,以防我当前的方法不好。
Excel table:
代码:
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个 5个 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());
}
}
}
如果你有列名,需要列数据,可以修改你的代码如下:
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());
}
}