Поставщик Microsoft .Jet.OLEDB.4.0 не зарегистрирован на локальном компьютере. - PullRequest
0 голосов
/ 18 ноября 2010

Я пытаюсь импортировать некоторые данные из Excel в базу данных.я получил следующий код от http://www.davidhayden.com/blog/dave/archive/2006/05/31/2976.aspx.У меня есть архитектура x86, так что это не проблема.когда я запускаю код, программа на 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 ]

1 голос
/ 18 ноября 2010

Если вы выполняете код на 64-битной машине и это веб-проект, откройте IIS, щелкните правой кнопкой мыши пул приложений и выберите «Дополнительные параметры». Установите второе свойство сверху: включите для 32-разрядного приложения значение True, что должно решить проблему.

0 голосов
/ 18 ноября 2010

Я предполагаю, что на компьютере, генерирующем эту ошибку, присутствует правильная версия Excel и файл Interop.Excel.dll?Поскольку провайдер Jet найден в DLL взаимодействия, я думаю, что это наиболее вероятное объяснение.

...