我'使用Windows窗体应用程序将数据导出到Excel。
应用程序同时构建x64和x86。
因此,必须安装两个版本的Microsoft Access数据库引擎才能在同一台计算机上运行该应用程序。
首先安装AccessDatabaseEngine.exe 和AccessDatabaseEngine_x64.exe被动安装。
x64版本的应用程序正在运行
但是x86版本正在进行中
SEHException: "External component has thrown an exception."
at System.Data.Common.UnsafeNativeMethods.IDBInitializeInitialize.Invoke(IntPtr pThis)
at System.Data.OleDb.DataSourceWrapper.InitializeAndCreateSession(OleDbConnectionString constr, SessionWrapper& sessionWrapper)
at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OleDb.OleDbConnection.Open()
代码部分如下;
var accessConnection = new OleDbConnection(connectionString);
accessConnection.Open();
ConnectionString是
Provider=Microsoft.ACE.OLEDB.12.0;Data Source="C:\Users\Me\Desktop\ExportTest.xls";Extended Properties="Excel 8.0;HDR=Yes";
我该如何解决?
答案 0 :(得分:3)
当Visual Studio中的构建配置平台不正确时,通常会发生这种情况,这可能发生在两个构建配置平台x86和x64中。
这是由于项目的构建配置平台与计算机上安装的Microsoft Access数据库引擎不匹配。
为了解决此错误:
答案 1 :(得分:2)
我有同样的错误。当我将Provider=Microsoft.ACE.OLEDB.12.0;
更改为Provider=Microsoft.ACE.OLEDB.16.0;
并运行Office 2016时,此问题已修复。
答案 2 :(得分:0)
我可以提出一个可怕的解决方案,但是当您承受压力时,它会起作用。 打开Excel文件并将其另存为xls文件而不是xlsx。安装ACEOLEDB.12 32位版本并以这种方式提取数据。 这不是答案,但是可以作为解决方法。
在大多数情况下,SQL Server中的“平面文件”导入选项可以正常工作。
答案 3 :(得分:0)
我遇到了类似的问题,并使用修复选项重新安装了Microsoft Access数据库引擎。它为我工作。
答案 4 :(得分:0)
我同时拥有64位和32位版本,并且我遇到了同样的问题。我只是转到项目的属性,在“构建”选项卡中,取消选中“首选32位”的框。
答案 5 :(得分:0)
就我而言,我安装了Office 2013 x64。然后,我安装了AccessDatabaseEngine2016_X64.exe
,然后使用“ / quiet”开关安装了AccessDatabaseEngine2016.exe
。我发现,如果我先安装x86引擎,我会得到您看到的错误,因此订购很重要。我也将连接字符串更改为Provider=Microsoft.ACE.OLEDB.16.0
(这似乎可以提供更好的OleDb错误报告)。
您可以使用ODBC数据源来验证驱动程序的安装。