“Microsoft .Jet.OLEDB.4.0”提供程序未在本地计算机上注册

时间:2010-11-18 11:12:35

标签: c# excel oledb

我正在尝试将一些数据从excel导入数据库。我从http://www.davidhayden.com/blog/dave/archive/2006/05/31/2976.aspx获得了以下代码。我有一个x86 arhitecture,所以这不是问题。当我运行代码时,程序在connection.Open();处说“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);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

如果您在64位计算机上运行代码及其Web项目,则打开IIS,右键单击“应用程序池”,然后单击“高级设置”。从顶部设置第二个属性:启用32位应用程序为True,这应解决问题。

答案 1 :(得分:0)

我认为生成此错误的计算机上存在正确版本的ExcelInterop.Excel.dll文件?由于Jet提供程序位于互操作DLL中,我认为这是最可能的解释。