2010-11-18 16 views
0

J'essaie d'importer des données d'Excel dans une base de données. J'ai obtenu le code suivant de http://www.davidhayden.com/blog/dave/archive/2006/05/31/2976.aspx. J'ai une architecture x86 donc ce n'est pas le problème. Quand je lance le code, le programme dit au connection.Open(); que le fournisseur 'Microsoft .Jet.OLEDB.4.0' n'est pas enregistré sur la machine locale. Des idées ?Le fournisseur 'Microsoft .Jet.OLEDB.4.0' n'est pas enregistré sur la machine locale

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); 
     } 
    } 
} 

Répondre

1

Si vous exécutez le code sur une machine 64 bits et qu'il s'agit d'un projet Web, ouvrez IIS, cliquez avec le bouton droit sur le pool d'applications et cliquez sur Paramètres avancés. Définir la deuxième propriété à partir du haut: Activer l'application 32 bits à True, cela devrait résoudre le problème.

+0

J'ai précisé que j'utilise une machine 32 bits – Alex

+0

Merci. Cela a fonctionné pour moi. – Narnian

0

Je suppose que les deux que la version correcte de Excel et le fichier Interop.Excel.dll est présent sur la machine générer cette erreur? Puisque le fournisseur Jet est trouvé dans la DLL interop, je pense que c'est l'explication la plus probable.

+0

la version Excel est maintenant correcte mais elle montre toujours la même erreur. le Interop.Excel.dll n'est pas demandé – Alex