2010-09-08 61 views
6

我在我的應用程序中使用以下內容讀取excel表的內容:從Excel讀取:64位系統上的Microsoft.Jet.OLEDB.4.0錯誤

 OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0"); 
_myDataSet = new DataSet(); 
OleDbDataAdapter myCommand = new OleDbDataAdapter(" SELECT * FROM [" + "My Sheet" + "$]", con); 

myCommand.Fill(_myDataSet); 
con.Close(); 

這在64位系統中失敗,錯誤:

Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine

如何在64位計算機上運行?

回答

5

Microsoft.Jet.OLEDB沒有64位版本,只有32位。將您的應用程序編譯爲32位(平臺目標:x86版本選項)。

+0

是的,或者您可以使用corflags.exe切換程序集以在32位模式下運行。 – 2010-09-08 23:01:36

1

我不相信它的工作原理......看到此相關的問題:OleDB not supported in 64bit mode?

這個問題似乎是在COM /互操作是不適合64位環境中,所以它不能註冊在64位模式下。

您可以強制.NET應用在64位機器上以32位模式運行,這將允許您訪問OleDB功能。

10

微軟發佈了一個適用於Access和Excel的64位驅動程序的驅動程序發行版。您可以從MS downloads站點下載64位和32位版本。下載頁面還簡要概述了您需要在連接字符串中更改以引用ACE驅動程序。

簡而言之,安裝64位的驅動程序分發,然後沿的線連接字符串更改爲:

string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=""Excel 8.0;IMEX=1"""; 
相關問題