我想从excel表中将数据转换为combobox
。但是,工作表名称与sheet1$
不同。我的Excel工作表名称为Sac Haddehanesi Kalite Kontrol
。当我创建工作表名称sheet1
时,它可以工作。但是,excel文件是每个人发送的,它是另一个人给出的工作表名称。因此,我必须使用原始工作表名称,并且无法通过以下代码阅读:
pintu(textBox8.Text);
try
{
con.Open();
str = "SELECT * FROM [Sac Haddehanesi Kalite Kontrol$]";
com = new OleDbCommand(str, con);
oledbda = new OleDbDataAdapter(com);
ds = new DataSet();
oledbda.Fill(ds, "Sac Haddehanesi Kalite Kontrol$");
con.Close();
dt = ds.Tables["Sac Haddehanesi Kalite Kontrol$"];
int i = 0;
for (i = 0; i <= dt.Rows.Count - 1; i++)
comboBox1.DataSource = dt;
comboBox1.DisplayMember = "[Bobin ID]";
以下是我的电子表格的图片:
答案 0 :(得分:1)
在自己调试问题之后,如果工作表名称有特殊字符,那么看起来有问题。
尝试根据索引而不是名称来阅读工作表。
以下代码将所有工作表名称读入临时DataTable
,获取第一个工作表名称并在其余代码中使用它:
con.Open();
// Read all sheet names into a temporary data table
DataTable dtExcelSheetName = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
// Get the FIRST sheet name
string sheetName = dtExcelSheetName.Rows[0]["Table_Name"].ToString();
// Now use this name to select
str = "SELECT * FROM [" + sheetName +"]";
com = new OleDbCommand(str, con);
oledbda = new OleDbDataAdapter(com);
ds = new DataSet();
oledbda.Fill(ds, sheetName);
con.Close();
dt = ds.Tables[sheetName];
答案 1 :(得分:0)