0

Je n'ai aucun problème à utiliser ExcelDNA et je n'ai aucun problème à utiliser System.Data.SQLite dans un exe autonome. Cependant, je n'ai pas réussi à faire fonctionner les deux pour créer un fichier DLL Excel (en utilisant Visual Studio 2012 et NuGet pour installer le package SQLite .NET) à utiliser pour interroger une base de données SQLite. Vous ne savez pas si les dépendances SQLite ne sont pas résolues. Tout ce que je reçois: "Une exception de première instance de type 'System.IO.FileLoadException'" s'est produite dans Unknown Module.and donnant une erreur VALUE dans la cellule Excel. Donc je me demandais si quelqu'un ici aurait réussi à utiliser les deux ensemble et s'il y a des pièges que je ne connais pas. J'utilise le Northwind SQLite database pour ce test.Utilisation de ExcelDNA et System.Data.SQLite


Répondre

0

Essayez ces étapes:

  • Créer une nouvelle classe C# projet Bibliothèque
  • PM> Installer-Package Excel ADN-
  • PM> Installer-Package System.Data.SQLite.Core
  • Placez le fichier Northwind.db (créé à partir du fichier .sql pointé vers) dans C: \ Temp
  • Ajoutez ce code dans votre projet:

    using System; 
    using System.Data; 
    using System.Data.SQLite; 
    using ExcelDna.Integration; 
    
    namespace UsingSQLite 
    { 
        public static class MyFunctions 
        { 
         static SQLiteConnection _connection; 
         static SQLiteCommand _productNameCommand; 
    
         private static void EnsureConnection() 
         { 
          if (_connection == null) 
          { 
           _connection = new SQLiteConnection(@"Data Source=C:\Temp\Northwind.db"); 
           _connection.Open(); 
    
           _productNameCommand = new SQLiteCommand("SELECT ProductName FROM Products WHERE ProductID = @ProductID", _connection); 
           _productNameCommand.Parameters.Add("@ProductID", DbType.Int32); 
          } 
         } 
    
         public static object ProductName(int productID) 
         { 
          try 
          { 
           EnsureConnection(); 
           _productNameCommand.Parameters["@ProductID"].Value = productID; 
           return _productNameCommand.ExecuteScalar(); 
          } 
          catch (Exception ex) 
          { 
           return ex.ToString(); 
          } 
         } 
    
        } 
    } 
    
  • Appuyez sur F5 pour charger et exécuter dans Excel.

  • Essayez = ProductName (1) dans une cellule. Vous devriez voir "Chai" ou un message d'exception détaillé.

Il fonctionne sur ma machine :-)

Notez que vous ne serez pas en mesure d'emballer l'ensemble de SQLite dans le fichier .xll à l'aide ExcelDnaPack, puisque l'outil d'emballage ne supporte pas les assemblées mixtes.

J'ai également ajouté un exemple de projet pour cela sur GitHub: https://github.com/Excel-DNA/Samples/tree/master/UsingSQLite