使用ExcelDNA和System.Data.SQLite

时间:2015-04-08 16:42:08

标签: c# sqlite visual-studio-2012 system.data.sqlite excel-dna

使用ExcelDNA我没有问题,在独立的exe中使用System.Data.SQLite也没有问题。 然而,我无法共同创建用于查询SQLite数据库的Excel Addin dll(使用Visual Studio 2012和NuGet安装SQLite .NET包)。 不确定是否有任何SQLite依赖项未得到解决。我得到的全部内容:"类型' System.IO.FileLoadException'"发生在未知模块中,并在Excel单元格中出现VALUE错误。 所以想知道这里是否有人会成功地使用这两者,如果有一些问题我不知道。 我正在使用Northwind SQLite database进行此测试。


1 个答案:

答案 0 :(得分:0)

尝试以下步骤:

  • 创建新的C#类库项目
  • PM>安装包Excel-DNA
  • 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中运行。

  • 在单元格中尝试= ProductName(1)。你应该看到" Chai"或详细的例外消息。

它适用于我的机器: - )

请注意,您无法使用ExcelDnaPack将SQLite程序集打包到.xll文件中,因为打包工具不支持混合程序集。

我还在GitHub上添加了一个示例项目:https://github.com/Excel-DNA/Samples/tree/master/UsingSQLite