0

У меня нет проблем с использованием ExcelDNA, и у меня также нет проблем с использованием System.Data.SQLite в автономном exe. Howover Мне не удалось заставить обе работать вместе для создания dll Excel Addin (с использованием Visual Studio 2012 и NuGet для установки пакета SQLite .NET), который будет использоваться для запроса базы данных SQLite. Не уверен, что какие-либо SQLite-зависимости не будут решены. Все, что я получаю: «Первое исключение исключений типа« System.IO.FileLoadException »произошло в Unknown Module.and давая ошибку VALUE в ячейке Excel. Так было интересно, может ли кто-нибудь здесь успешно использовать оба вместе, и если есть какие-то ошибки, которые я не знаю. Для этого теста я использую Northwind SQLite database.Использование ExcelDNA и System.Data.SQLite


ответ

0

Выполните следующие действия:

  • Создайте новый проект библиотеки классов C#
  • PM> Install-Package Excel-ДНК
  • PM> Install-Package System.Data.SQLite.Core
  • Поместите файл Northwind.db (созданный из файла .sql, на который вы указываете) в C: \ Temp
  • Добавьте этот код в свой проект:

    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(); 
          } 
         } 
    
        } 
    } 
    
  • Нажмите F5 для загрузки и запуска в Excel.

  • Try = ProductName (1) в ячейке. Вы должны увидеть «Chai» или подробное сообщение об исключении.

Он работает на моей машине :-)

Обратите внимание, что вы не будете в состоянии упаковать сборку SQLite в .xll файл с помощью ExcelDnaPack, так как инструмент упаковки не поддерживает смешанные сборки.

Я также добавил образец проекта для этого на GitHub: https://github.com/Excel-DNA/Samples/tree/master/UsingSQLite

 Смежные вопросы

  • Нет связанных вопросов^_^