2010-11-18 36 views
0

Excelからデータベースにデータをインポートしようとしています。私はhttp://www.davidhayden.com/blog/dave/archive/2006/05/31/2976.aspxから次のコードを得ました。私はx86アーキテクチャを持っているので、それは問題ではありません。私がコードを実行すると、プログラムはconnection.Open();に 'The。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を開き、アプリケーションプールを右クリックし、[詳細設定]をクリックします。 2番目のプロパティを上から設定します。32ビットアプリケーションをTrueに設定すると、問題が解決されます。

+0

私は32bitマシンを使用していることを指定しました – Alex

+0

ありがとうございます。それは私のために働いた。 – Narnian

0

私は両方Excelの正しいバージョンとInterop.Excel.dllファイルということは、このエラーを生成するマシン上に存在していることを前提と? Jetプロバイダはinterop DLL内に存在するので、これは最も可能性の高い説明だと思います。

+0

Excelのバージョンは正しくなりましたが、それでも同じエラーが表示されます。 Interop.Excel.dllが要求されていません – Alex

関連する問題