使用OleDB在Excel95工作簿中获取工作表名称

时间:2010-02-11 18:43:24

标签: c# excel oledb

我无法使用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,这最终会返回一个只有一条记录的数据表。我猜测连接字符串有问题吗?

2 个答案:

答案 0 :(得分:2)

根据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 8.0 for Excel   97,Excel 2000或Excel 2002(XP)   工作簿(版本8.0,9.0和10.0   Excel)。

答案 1 :(得分:0)

OleDb不会发现空纸张。

只要表格中包含一些数据,您就应该得到他们的名字。