c# - 当工作表名称包含空格时无法从 Excel 工作表中读取

标签 c# excel

我想从 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]";

这是我的电子表格的图片:

enter image description here

最佳答案

自己调试问题后,似乎在工作表名称有特殊字符时读取有问题。

尝试根据其索引而不是其名称从工作表中读取。

以下代码将所有工作表名称读入临时 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/

相关文章:

xml - 如何在未安装 Excel 的情况下将 DBGrid 导出为 OOXML 格式(Excel 2007/2010 格式)?

c# - C#翻转位图函数

c# - .dtbcache 文件有什么作用?

将 Excel 数字日期重新格式化为 R 日期

excel - Word VBA 插入书签和格式化

image - 从 Excel 文档中提取图像

c# - 十进制 SQL Server EF C# 的参数超出范围异常

c# - 具有特殊字符的 Asp.net C# 电子邮件地址

c# - 从 .NET 中的 DBPedia 大转储文件中提取内容

excel - "Formula omits adjacent cells"的解决方法