嘿所有, 我试图使用OleDbConnection从Excel文件中获取工作表名称列表。 (注意:此程序将在服务器上运行,因此无法使用office互操作类)。所以一切都可以正常使用以下代码,并带回工作表名称:
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”而不是“sheet.1”中读取数据。
任何帮助将不胜感激。