使用OleDbConnection检索带有特殊字符的Excel工作表名称

嘿所有,我试图从Excel文件使用OleDbConnection获取表名称列表。 (注意:该程序将在服务器上运行,因此无法使用Office Interop类)。 所以一切工作正常,下面的代码,它带回表名:

var dt = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); foreach (DataRow row in dt.Rows) { string sheetName = row["TABLE_NAME"].ToString(); } 

但是,如果Excel表名包含一个点“。”,那么将转换为“#”。 例如,如果excel文件具有以下图表名称:

 Sheet.1 Sheet#1 

上面的代码将返回:

 "Sheet#1$" "'Sheet#1$'" 

而表单名称现在基本相同。 变差!!! 当按照以下代码从Sheet.1读取数据时:

 var adapter = new OleDbDataAdapter("SELECT * FROM ['Sheet.1$']", connectionString); 

它实际上将从“工作表#1”而不是“工作表1”中读取数据。

任何帮助将不胜感激。