Microsoft.Jet.OLEDB.4.0 和 Microsoft.ACE.OLEDB.12.0 的区别

今天用户发来一张图,用户再向ERP系统中上传Excel文件时提示的,这是因为之前用户的ERP系统换了一台服务器,服务器环境中没有安装Office 软件导致的,所以就没有对应的环境。

 

 提示内容未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序(导入Excel文件报错);

 

问题分析:

出现上述的提示,是因为在通过ADO对Excel对象进行连接时(此时Excel则认为是一个数据源),需要配置对Excel数据源对应的连接串,这个连接串中包括了Provider信息(其实类似对数据库进行连接操作时,都需要指定连接字符串),以下是一行连接串源代码:
strConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strExcelFilePath & ";Extended Properties=Excel 12.0"
这里的Provider使用了Microsoft.ACE.OLEDB.12.0,其实除了Microsoft.ACE.OLEDB.12.0,还有Microsoft.Jet.OLEDB.4.0,它们俩者之间有什么联系和区别呢:

 

共同点:

Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0 一样,都是连接到Excel对象的接口引擎;

 

不同点:

对于不同的Excel版本,有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎)。
Jet 引擎,可以访问 Office 97-2003,但不能访问 Office 2007。
ACE 引擎是随 Office 2007 一起发布的数据库连接组件,既可以访问 Office 2007,也可以访问 Office 97-2003。
另外:Microsoft.ACE.OLEDB.12.0 可以访问正在打开的 Excel 文件,而 Microsoft.Jet.OLEDB.4.0 是不可以的。

 

解决方案:

解决方法:采用ACE的方式,

具体如下:

1. 修改连接字符串 原始:OleDbConnectionconn = new OleDbConnection("Provider = Microsoft.Jet."+ "OLEDB.4.0; Data Source =" + path + ";" + "Extended Properties=Excel 8.0");

改为:OleDbConnectionconn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";" + "Extended Properties=\"Excel 12.0;IMEX=1;HDR=YES;\"");

(只做第1步更改,运行程序还会报错:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序)

2. 安装Microsoft Access 数据库引擎

(1)2007 Office system 驱动程序

http://www.microsoft.com/zh-CN/download/details.aspx?id=23734

支持的操作系统:Windows Server 2003 Service Pack 1, Windows Vista, Windows XP Service Pack 2

此下载适用于以下 Office 程序:2007 Microsoft Office system

(2)Microsoft Access 2010 数据库引擎

http://www.microsoft.com/zh-CN/download/details.aspx?id=13255

支持的操作系统:Windows 7, Windows 8, Windows Server 2003, Windows Server 2003 Service Pack 1, Windows Server 2003 Service Pack 2, Windows Server 2008 R2, Windows Server 2008 Service Pack 2, Windows Vista Service Pack 1, Windows XP Service Pack 2

只有 32 位 Access 数据库引擎可在 Windows XP Service Pack 3 上使用

注:本人使用的操作环境:64位 win7+office2007(c# winForm开发),选择的 2(2)中的数据库引擎,在安装过程中遇到以下问题。

我采用的解决方法是:将提示中列出的几项Microsoft Office Enterprise 2007等删除,删除后再安装数据库引擎,安装成功(导入Excel问题解决)。

 

之后依然安装之前的office2007,安装过程中出现问题忽略,继续安装,安装完毕后,office能正常使用。

还有一种方案是采用 x86方式运行

1. 目标平台改为:x86

 

2. IIS设置启用32位应用程序

 

 

posted @ 2020-02-11 12:00  好奇未必害死猫  阅读(3114)  评论(0编辑  收藏  举报