我想从 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]";
这是我的电子表格的图片:
最佳答案
自己调试问题后,似乎在工作表名称有特殊字符时读取有问题。
尝试根据其索引而不是其名称从工作表中读取。
以下代码将所有工作表名称读入临时 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];
关于c# - 当工作表名称包含空格时无法从 Excel 工作表中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45796497/