2011-05-23 122 views
4

我正在使用VS2010在.NET 4.0框架上運行ASP.NET C#應用程序一臺Win 7機器。在我的代碼中,我想將Excel文件與「DataTable」對象鏈接起來。即我想訪問Excel文件中的數據並將其存儲在DataTable對象中。所以我用下面的代碼片段:如何擺脫異常「Microsoft.ACE.OLEDB.12.0」提供程序未在本地計算機上註冊「在Win 7

_

_connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"" + excelFile + "\";Extended Properties='Excel 8.0; HDR=NO; IMEX=1'"; 
     } 

DataTable table = new DataTable(); 
      OleDbCommand command = new OleDbCommand(); 
      command.Connection = new OleDbConnection(_connectionString); 
      command.CommandType = CommandType.Text; 
      command.CommandText = "select * from [NameOFExcelSheet$A1:D20]"; // Want to read the Excel sheet. The name of Excel sheet is "NameOfExcelSheet". Wan to read the celles in the range A1 and D20. 

      OleDbDataAdapter adapter = new OleDbDataAdapter(); 
      adapter.SelectCommand = command; 
      adapter.Fill(table); // EXCEPTION OCCURS IN THIS LINE. 

我可安裝在鏈路http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en

不過還是我剛開了同樣的異常味精在運行我的代碼的EXE。 ,我得到的例外是「在‘Microsoft.ACE.OLEDB.12.0’供應商未註冊的本地機器上的」

PLZ幫助我。

感謝提前。

+1

39/56無法接受的答案。你應該花一點時間來完成並接受更多的答案。 – spender 2011-05-23 11:55:07

+0

我會建議,當詢問一些例外情況時,提供關於它的詳細信息:type,message。這將有所幫助 - 沒有人擁有水晶球。 – VikciaR 2011-05-23 12:13:50

+0

嗨,問題文本有它的例外。我再次編輯了我的問題,並將其納入了正文。 – codeLover 2011-05-23 13:18:28

回答

3

您可能在64位Windows上安裝了32位驅動程序。無論是切換到32位編譯或源64位驅動程序。

+0

你可以讓我知道1)如何切換到32位編譯。或2)提供一個64位驅動程序。如果我聽起來很蠢,請原諒。我在這方面很新鮮。請讓我知道。 – codeLover 2011-05-23 11:57:10

+0

您需要在VS的「構建」菜單下的「配置管理器」中添加一個新配置。本MSDN文章解釋瞭如何轉到x64。 x86的步驟相同。 http://msdn.microsoft.com/en-us/library/ms185328.aspx – spender 2011-05-23 12:10:49

+0

你可能是在正確的軌道上。但是,該提供程序沒有64位可再發行組件,而他正在使用ASP.NET。他必須啓用一個32位應用程序池。 – 2011-05-24 00:04:37

1

你應該試試這個(確保你是在86(32位)機):

此下載將安裝一套可以用於促進2007 Microsoft Office系統文件之間數據的傳輸組件非Microsoft Office應用程序。

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en

+0

那麼,但我的應用程序運行在64位Win 7機器。我該如何去做。 – codeLover 2011-05-23 13:20:51

+0

然後你應該切換到32位編譯像@spender說 我不知道它在哪裏,試試: 「項目屬性>編譯>高級編譯>在下拉選擇x86(32位)」 – Chumillas 2011-05-23 14:44:12

相關問題