大家好,我正在尝试使用 OleDbConnection 从 Excel 文件中获取工作表名称列表。(注意:该程序将在服务器上运行,因此没有使用办公室互操作类的选项)。因此,使用以下代码一切正常,并带回工作表名称:
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);
它实际上会从“sheet#1”而不是“sheet.1”读取数据。
任何帮助将不胜感激。