2010-08-21 58 views
2

我有一個從Excel導入數據到數據集的程序。要連接到Excel我用下面的代碼...如何從C#連接到不同版本的Excel?

return new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + 
fileName + "; Jet OLEDB:Engine Type=5;"+ "Extended Properties=\"Excel 8.0;\""); 

我剛買了一臺新計算機上使用Excel 2010和現在連接嘗試失敗,拋出一個異常,說The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine

這是因爲新版本的Excel需要不同的連接字符串?有沒有人遇到過這個?

編輯: 其實我只是讀了一些地方,使用System.Data.OleDbClient類不需要Excel即使安裝在計算機上。所以我的問題可能與Excel無關,而與Microsoft.Jet工具無關。我的電腦運行Windows7 64位。不應該已經安裝?

+1

您正在使用64位Windows?沒有64位版本的Microsoft.Jet.OLEDB提供程序。 http://social.msdn.microsoft.com/Forums/en/netfx64bit/thread/d2d33cfd-ed81-490a-906e-b9e29d572b59 – 2010-08-21 13:03:04

+0

是Windows 7 64,但我更改了目標平臺以構建x86。 – PICyourBrain 2010-08-21 13:13:51

+0

如何確定我是否擁有32位版本的OLEDB提供程序? – PICyourBrain 2010-08-21 13:14:14

回答

1

您需要專門編寫程序的32位,所以它會在WOW子系統中運行,並調用32位Jet提供商。如上所述,沒有64位版本的Jet提供程序,可能永遠不會。

在Visual Studio中,通過將項目設置中的目標CPU類型設置爲x86而不是Any或64位來實現。

如果您沒有程序的源代碼,可以使用.NET框架和/ 32bit +標誌附帶的corflags.exe實用工具修改.exe文件,但如果它是一個強有力的簽名程序集,一旦你修改了它,你就需要.SNK重新簽名。

這裏是在WOW64上的參考,如果您需要更詳細:http://en.wikipedia.org/wiki/WoW64