我是使用 Microsft.ACE.OLEDB 12.0 的初学者。我创建了一个 Winforms 应用程序 VS 2010。
并创建将数据网格数据导出到 MS Access 文件的功能。我使用微软 Oledb
用于将数据网格数据导出到 MS Access 文件。但是当我尝试导出时出现此错误
这
数据到 ms 访问。
请看下图。
我还在我的应用程序中引用了Microsoft.Office 12.0 对象库。
批量构建配置
我是使用 Microsft.ACE.OLEDB 12.0 的初学者。我创建了一个 Winforms 应用程序 VS 2010。
并创建将数据网格数据导出到 MS Access 文件的功能。我使用微软 Oledb
用于将数据网格数据导出到 MS Access 文件。但是当我尝试导出时出现此错误
这
数据到 ms 访问。
请看下图。
我还在我的应用程序中引用了Microsoft.Office 12.0 对象库。
批量构建配置
对这些位的引用Access Interop
与您的异常无关,并且访问互操作不是使用System.Data.OleDb
.
当您为 编译应用程序AnyCPU Platform
、在 64 位系统上运行并且安装的 ADO.NET 提供程序 (Microsoft ACE.OLEDB.12.0) 是 32 位版本时,就会出现问题。
使用AnyCpu
目标平台时,您的代码将在 64 位系统上作为 64 位代码执行,在 32 位系统上作为 32 位代码执行。以 64 位执行的应用程序不能使用 32 位驱动程序(反之亦然)。现在再加上 Microsoft.ACE.OLEDB.12.0 有两个不同版本的事实。一个用于 64 位,一个用于 32 位,它们不能一起安装在同一台机器上。
最简单的解决方法是通过 Visual Studio 菜单更改应用程序的目标平台
BUILD -> Configuration Manager -> Active Solution Platform -> x86
如果该x86
选项不存在,则选择 NEW,将其命名x86
并Copy Settings from AnyCPU
检查Create new project platforms
如果您认为在 64 位操作系统上使用 32 位应用程序会导致性能损失或需要避免的事情,那么请三思而后行并阅读此参考资料,其中仔细检查了 AnyCpu 的优点和缺点。如果您没有特定的使用理由,AnyCpu
最好继续使用x86
.
当然,另一种选择是卸载 32 位版本并从此处安装 64 位版本的 ACE ,然后在 64 位系统上将应用程序作为 AnyCpu 运行。但这对于您的部署方案来说可能是一场噩梦。如果您的 x64 目标机器上安装了 Microsoft Office 32 位版本怎么办?Office 安装其位兼容版本的 ACE,并且如前所述,不可能在同一台计算机上安装 32 位和 64 位 ACE。
现在,您还应该要求您的客户将 Office 重新安装为 64 位,以使您的 64 位应用程序满意。
更改其应用程序池的“高级设置”以允许运行 32 位程序……这对我来说是这样的。
当我们阅读 Excel 文件时,我遇到了类似的问题。
问题历史:
由于内存需求,我们最近将应用程序从 32 位迁移到 64 位。为此,我们将 Windows 7 从 32 位迁移到 64 位。但是我们仍然在我们的机器上安装了 32 位的 office。
因为,我们在将 Excel 数据导入应用程序时遇到了这个问题。
解决方案,
我下载了 64 位版本的http://www.microsoft.com/en-us/download/details.aspx?id=13255并安装了参数为,
AccessDatabaseEngine_x64.exe /被动
没有任何代码更改我的问题得到解决。
笔记:
在 64 位操作系统和 64 位办公室上,如果没有此修复,我的功能可以正常工作。仅当我们的应用程序在 64 位操作系统上运行 64 位且安装了 32 位办公室时,才需要此修复程序。
基础方式:
应用程序:MVC C#
,对于 Win Server 64 位:
删除所有已安装的 office 32 位。
下载链接:https ://www.microsoft.com/en-us/download/details.aspx?id=13255
选择下载 64 位,然后安装到服务器(如果无法安装程序,请重新检查 1 点)。
再次尝试访问您的应用程序。在此处输入图像描述
对我来说,安装 Microsoft Access Database Engine 2010 Redistributable 修复了 32 位版本的问题。
就我而言