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
0
A
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