当工作表名称有空格时,无法从Excel工作表读取

我想从Excel工作表combobox数据导入combobox 。 但是,sheetname不像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]"; 

以下是我的电子表格的图片:

在这里输入图像描述

在自己debugging问题之后,看起来在读取表单名称时有个特殊字符的问题。

试着根据其索引而不是名字来阅读。

以下代码将所有图纸名称读入临时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];