Rag*_*h S 28 c# ms-access office-2007 winforms-interop winforms
我是初学者使用Microsft.ACE.OLEDB 12.0.我创建了一个Winforms应用程序VS 2010.
并创建一个函数,用于将数据网格数据导出到MS Access文件.我使用的是Microsoft Oledb
用于将数据网格数据导出到MS Access文件.但是当我尝试导出时出现此错误
该
数据到ms访问.
请看下面的图片.
我还在我的应用程序中引用了Microsoft.Office 12.0对象库.
批量构建配置
Ste*_*eve 52
对这些Access Interop
位的引用与您的异常无关,并且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
Run Code Online (Sandbox Code Playgroud)
如果该x86
选项尚未存在,则选择NEW,为其命名x86
,Copy Settings from AnyCPU
然后选中Create new project platforms
如果您认为在64位操作系统上使用32位应用程序是性能损失或需要避免的事情,那么请仔细考虑并阅读此参考文章,其中严格检查AnyCpu的PRO和CONS.如果您没有特定的理由使用AnyCpu
它,最好留下来x86
.
当然,另一个选择是卸载32位版本并从此处安装64位版本的ACE ,然后在64位系统上将您的应用程序作为AnyCpu运行.但这对于您的部署方案来说可能是一场噩梦.如果您的x64目标计算机上安装了Microsoft Office 32位版本,该怎么办?Office安装其位兼容版本的ACE,如上所述,不可能在同一台机器上安装32位和64位ACE.
现在,您还应该要求您的客户重新安装Office 64位,以保证您的64位应用程序满意.
小智 6
我们在阅读Excel文件时有类似的问题.
问题的历史:
由于内存要求,我们最近将应用程序从32位迁移到64位.为此,我们将Windows 7从32位迁移到64位.但我们仍在机器上安装了32位办公室.
因为,在将Excel数据导入应用程序时,我们遇到了这个问题.
解,
我下载了64位版本的http://www.microsoft.com/en-us/download/details.aspx?id=13255并使用参数安装,
AccessDatabaseEngine_x64.exe /被动
没有任何代码更改我的问题得到解决.
注意:
在64位操作系统和64位办公室,我的功能没有这个修复工作正常.仅当我们的应用程序在64位操作系统上运行时才需要此修复程序,该操作系统上安装了32位办公室.
归档时间: |
|
查看次数: |
87502 次 |
最近记录: |