none
未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 提供程序 RRS feed

  • 问题

  • 我在Web App程序里面用“Microsoft.Jet.OLEDB.4.0”来连接Excel文件,导入到数据库,在Windows 2003+ Office 2007 的环境下正常,但是在Windows 2008 R2 + Office 2010 Beta 下,出现这样的错误"未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 提供程序"

    网上的解决方式大概如下,但是行不通:
    需要注意的问题和解决方法:
    1.Microsoft.Jet.OLEDB.4.0不要写成Miscrosoft.Jet.OLEDB.4.0,;
    2.Data Source不要写成“Data Sourse”,
    3.检查是否安装了Office
    4.重新安装注册MDAC28.exe (一般你的安装目录里有或者到微软的官方网站上下)

    5.如果是64位平台,也可能出现这种情况;解决方法:生成->配置管理器->平台->点击Any Cpu选项卡->新建->新建平台->X86

    因为程序原先在 Windows 2003 下是行的,连接串本身应该没错,Office 2010 我安装了, MDAC28我下下载了,打开执行时解压缩窗口就没了,不知道有没有安装,而微软官方说MDAC28支持X86,似乎不支持64位系统,我现在是64位系统

    1、怎么解决"未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 提供程序"这个问题?
    2、怎么查看我有没有安装“Microsoft.Jet.OLEDB.4.0”?
    2010年2月4日 2:24

答案

  • 解决了,在对应的 IIS 应用程序池中,“设置应用程序池默认属性”/“常规”/"启用32位应用程序",设置为 true。
    估计是Windows 里已经有了 Microsoft.Jet.OLEDB.4.0,32位的,但是默认情况下应用程序池不启用32位程序,所以显示没有安装“Microsoft.Jet.OLEDB.4.0”。

    http://blog.crowe.co.nz/blog/archive/2007/04/16/728.aspx
    • 已标记为答案 Felixln 2010年2月4日 7:39
    2010年2月4日 7:38

全部回复

  • 有可能是你的连接字符串的问题,对OFFICE2007操作
    应该是Microsoft.ACE.OLEDB.12.0
    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=XXX.accdb;


    努力+方法=成功
    2010年2月4日 2:37
  • 有可能是你的连接字符串的问题,对OFFICE2007操作
    应该是Microsoft.ACE.OLEDB.12.0
    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=XXX.accdb;


    努力+方法=成功
    目前我只实现导入 Excel 2003 格式文件,不用 Microsoft.ACE.OLEDB.12.0
    • 已标记为答案 Felixln 2010年2月4日 7:39
    • 取消答案标记 Felixln 2010年2月4日 7:39
    2010年2月4日 2:55
  • 解决了,在对应的 IIS 应用程序池中,“设置应用程序池默认属性”/“常规”/"启用32位应用程序",设置为 true。
    估计是Windows 里已经有了 Microsoft.Jet.OLEDB.4.0,32位的,但是默认情况下应用程序池不启用32位程序,所以显示没有安装“Microsoft.Jet.OLEDB.4.0”。

    http://blog.crowe.co.nz/blog/archive/2007/04/16/728.aspx
    • 已标记为答案 Felixln 2010年2月4日 7:39
    2010年2月4日 7:38
  • Jet的开发已经停止了,所以没有64位的版本。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2010年2月12日 0:08
    版主
  • 这样的办法可以解决问题  可64位的外部组件就不能用了啊
    2010年11月16日 6:24
  • 64位的组件可以在64位的进程里通过web service/WCF等通讯方式调用

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年1月9日 17:15
    版主
  • 如果是64位平台,也可能出现这种情况。 解决方法:项目->属性->生成->配置管理器->平台->点击Any Cpu选项卡->选择 X86 英文版:Build->Platform target: select "X86"

    今天碰到这个问题,用上述方法解决。

    2011年1月13日 3:46