从excel列接收数据并在组合框中的值发生变化时在文本框中显示
问题描述:
从excel列接收数据并在组合框中的值发生更改时更改它们。从excel列接收数据并在组合框中的值发生变化时在文本框中显示
下面是代码:
private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)
{
con.Open();
str = "select * from [Sac Haddehanesi Kalite Kontrol] where [Bobin ID]='" + comboBox1.Text.Trim() + "'";
com = new OleDbCommand(str, con);
OleDbDataReader reader = com.ExecuteReader();
if (reader.Read())
{
comboBox1.Text = reader["Bobin ID"].ToString();
textBox1.Text = reader["Slab ID"].ToString();
textBox2.Text = reader["Döküm Kalitesi"].ToString();
textBox3.Text = reader["Sipariş Çelik Kalitesi"].ToString();
textBox4.Text = reader["Standart Kalite Adı"].ToString();
textBox5.Text = reader["Bobin Planlanan Kalınlık (mm)"].ToString();
}
con.Close();
reader.Close();
}
任何帮助,将不胜感激......
感谢ü
答
Excel工作表的名称以$结束,当工作表名称里面有空格,你必须用单引号括起来。因此,你的SQL应该读...
Select * From ['Sac Haddehanesi Kalite Kontrol$']
你应该这样不好就会被参数化查询......
Select * From ['Sac Haddehanesi Kalite Kontrol$'] Where [Bobin ID] = ?
OLEDB参数的位置,而不是命名(如SQL /服务器)。即按照它们在查询中出现的顺序指定它们。
因此你的代码变得...
OleDbCommand com = new OleDbCommand("Select * From ['Sac Haddehanesi Kalite Kontrol$'] Where [Bobin ID] = ?", conn);
com.Parameters.Add("?", OleDbType.VarChar).Value = "abc";
OleDbDataReader reader = com.ExecuteReader();
你可以通过在工作簿中的表按...
DataTable TablesList = conn.GetSchema("Tables");
foreach (DataRow TableRow in TablesList.Rows)
{
if (TableRow["TABLE_NAME"].ToString().EndsWith("$") | TableRow["TABLE_NAME"].ToString().EndsWith("$'"))
{
// Handle the Excel Sheet
}
}
顺便说一句,你不告诉我们在你的连接字符串您码。这里是我用于上面的那个...
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Test.xlsx;Extended properties='Excel 12.0;HDR=Yes;IMEX=1'";
+0
谢谢参数化查询,但它不”?将不起作用... – Serkan
+0
它完全适合我,所以我很害怕,如果你仍然有问题,然后还有别的事情上,你有没有在你的代码示例所示。也许你可以发布更多。 –
你调试过代码是否在内部移动if语句吗? –
什么是您的_Bobin ID_的数据类型? –
看来是约会。但是,这不是约会。它包括数字和字母。它是由另一个人发送的。所以,我不能改变Excel的数据类型。 – Serkan