2

大家好,我正在尝试使用 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”读取数据。

任何帮助将不胜感激。

4

0 回答 0