2010-11-18 76 views
0

我試圖從Excel中將一些數據導入數據庫。我從http://www.davidhayden.com/blog/dave/archive/2006/05/31/2976.aspx得到以下代碼。我有一個x86架構,所以這不是問題。當我運行代碼時,程序在connection.Open();上說,「Microsoft.Jet.OLEDB.4.0」提供程序未在本地計算機上註冊。有任何想法嗎 ?「Microsoft .Jet.OLEDB.4.0」提供程序未在本地計算機上註冊

string excelConnectionString = @"Provider=Microsoft 
    .Jet.OLEDB.4.0;Data Source=C://suc.xls;Extended 
    Properties=""Excel 8.0;HDR=YES;"""; 

// Create Connection to Excel Workbook 
using (OleDbConnection connection = 
      new OleDbConnection(excelConnectionString)) 
{ 
    OleDbCommand command = new OleDbCommand 
      ("Select ID,Data FROM [Data$]", connection); 

    connection.Open(); 

    // Create DbDataReader to Data Worksheet 
    using (DbDataReader dr = command.ExecuteReader()) 
    { 
     // SQL Server Connection String 
     string sqlConnectionString = "Data Source=.;Initial Catalog=Test;Integrated Security=True"; 

     // Bulk Copy to SQL Server 
     using (SqlBulkCopy bulkCopy = 
        new SqlBulkCopy(sqlConnectionString)) 
     { 
      bulkCopy.DestinationTableName = "ExcelData"; 
      bulkCopy.WriteToServer(dr); 
     } 
    } 
} 

回答

1

如果您在64位機器及其Web項目上運行代碼,然後打開IIS,右鍵單擊應用程序池並單擊高級設置。從頂部設置第二個屬性:啓用32位應用程序爲True,這應該可以解決問題。

+0

我已經指定我使用32位機器 – Alex 2010-11-18 11:49:37

+0

謝謝。這對我有效。 – Narnian 2012-09-21 15:47:43

0

我認爲這兩者的Excel正確的版本和Interop.Excel.dll文件存在本機產生這個錯誤嗎?由於Jet提供程序在互操作DLL中找到,所以我認爲這是最可能的解釋。

+0

excel版本現在正確,但它仍然顯示相同的錯誤。 Interop.Excel.dll沒有請求 – Alex 2010-11-18 11:21:39

相關問題