我无法使用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,这最终会返回一个只有一条记录的数据表。我猜测连接字符串有问题吗?
答案 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不会发现空纸张。
只要表格中包含一些数据,您就应该得到他们的名字。