大家好,在对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查看)所以,在此麻烦大家指点一下。
谢谢了。