当前位置:编程学习 > C#/ASP.NET >>

Jet和ACE引擎的问题!

大家好,

在对Excel进行连接的时候:
针对03:"Provider=Microsoft.JET.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=D:\\book1.xls"
针对07:"Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source= D:\\book1.xls"

现有一台电脑,只安装了OFFICE2003,也就是说只有JET引擎。如果我要读取一个EXCEL07文件,当我用ACE引擎读取时,会提示我没有注册ACE引擎的。如果我用JET引擎读取EXCEL07文件,会提示我不是预期格式。

我用了一下方式判断我应该用哪个引擎读取EXCEL:
 
string str="";
 try
 {
 str = "Provider=Microsoft.JET.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=";
OleDbConnection conn = new OleDbConnection(str + filename);
conn.Open();
conn.Dispose();
}
catch(OleDbException ex)
{
str = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=";
OleDbConnection conn = new OleDbConnection(str + filename);
conn.Open();
conn.Dispose();
}

OleDbConnection conn2 = new OleDbConnection(str + filename);
conn2.Open();

我的思路是:通过try和catch对第一个引擎进行判断,如果出错,就用第二个引擎,因为无非就是03和07.
然后讲str传出来当成最终的连接字符串。

这种方法成功了,读取出来的数据也没有问题。

但是我还是不太明白,这台电脑只有2003,那么str最后就是JET引擎,就是try里面的字符串。那现在用JET去读07文件,为什么没有提示我不是预期格式?
(这台电脑装了一个插件,在没有安装07的情况下,可以打开07查看)

所以,在此麻烦大家指点一下。
谢谢了。 --------------------编程问答-------------------- 自己顶一下!! --------------------编程问答--------------------  因为你比较 2
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,