如何阅读包含特殊字符“#”的Excel工作表名称

时间:2015-06-11 09:00:28

标签: c# excel

当我使用oledb C#读取excel时,它正在成功检索数据。但是当工作表名称包含#时,它不会读取数据。它给出以下错误。

  

不是有效名称。确保它不包含无效字符或标点符号,并且不会太长。

我猜Oledb将#字符转换为.

2 个答案:

答案 0 :(得分:0)

OpenXML是最好的出路。 只有存在“#”时才会出现问题,但任何重命名的工作表都会出现问题。

答案 1 :(得分:0)

Karthik,

您能否发布您的代码以便我们检查?

我尝试了以下并且效果很好。

DataTable dtSheet = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

foreach (DataRow dr in dtSheet.Rows)
            {
                string sheetName = dr["TABLE_NAME"].ToString();

               cmd.CommandText = "SELECT * FROM [" + sheetName + "]";

                DataTable dt = new DataTable();
                dt.TableName = sheetName;

                OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                da.Fill(dt);

                ds.Tables.Add(dt);
            }

另请注意,如果您错过将表(工作表)名称放在括号“[]”

中,则代码将无法读取工作表