【问题标题】:Get sheet names in Excel95 workbook using OleDB使用 OleDB 在 Excel95 工作簿中获取工作表名称
【发布时间】:2010-02-11 18:43:23
【问题描述】:

我在使用 Jet 提供程序和 OleDb 获取 Excel95 工作簿中的工作表名称时遇到问题。

我有一个包含 3 张工作表、Sheet1、Sheet2、Sheet3 的工作簿。我正在使用以下代码来提取工作表名称:

var connectionString =
String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"", filePath);

using (var connection = new OleDbConnection(connectionString))
{
    connection.Open();
    var dtXlsSchema = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);        
}

这最终返回一个数据表,其中只有一条记录,用于 Sheet1。我猜是连接字符串有问题?

【问题讨论】:

    标签: c# excel oledb


    【解决方案1】:

    根据this page,在您的连接字符串中使用 Excel 5.0 而不是 Excel 8.0。

    这有帮助吗?

    编辑:

    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 5.0;HDR=YES;IMEX=1\"", filePath);
    

    EDIT2:

    Excel 版本:为 Excel 95 工作簿指定 Excel 5.0(版本 7.0 Excel 的),以及用于 Excel 的 Excel 8.0 97、Excel 2000 或 Excel 2002 (XP) 工作簿(版本 8.0、9.0 和 10.0 Excel)。

    【讨论】:

      【解决方案2】:

      OleDb 不会意识到空工作表。

      只要工作表中有一些数据,你就应该得到它们的名字。

      【讨论】:

      • 这很奇怪......工作簿中存在工作表。这就像说如果表为空,则表中不存在表。哦,好的,谢谢你的回答。
      • Excel 和 OleDb 不一样。 OleDb 只对实际有数据的工作表感兴趣。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-19
      • 2021-04-29
      • 1970-01-01
      相关资源
      最近更新 更多