0

C# で Excel-Dna を使用してデータを表示できません。データを取り込んでテーブルを作成する関数があるので、データを表示するためだけにテスト関数を書きましたが、値を取得できません。エラーは #VALUE です。

public class Functions : IExcelAddIn
{
    public static String Username { get; set; }
    public static String Password { get; set; }
    public static Random rnd = new Random();

    public void AutoOpen()
    {
        ExcelAsyncUtil.Initialize();
    }

    public void AutoClose()
    {
        ExcelAsyncUtil.Uninitialize();
    }

    [ExcelFunction(Description="My first Excel-DNA function")]
    public static string MyFirstFunction(string name)
    {
        return "Hello, " + name + ".";
    }

    public static string ShowCurrentUser()
    {
        return (String.IsNullOrWhiteSpace(Username)) ? "Noone is logged in." : Username;
    }
    public static string LogIn(string user, string password)
    {
        const string connectionString = "server=localhost;userid={0};password={1};";
        MySqlConnection connection = new MySqlConnection(String.Format(connectionString, user, password));
        string output = "";
        try
        {
            connection.Open();
            Username = user;
            Password = password;
            output = "Successfully logged in!";
        }
        catch (Exception e)
        {
            output = "Errors: " + e.ToString();
        }
        finally
        {
            connection.Close();
        }

        return output;
    }
    public static object QMRTable(int SynNum, int YoA, int qtr, int TabNum)
    {
        object[,] response = new object[16, 3];

        for (int r = 0; r < response.GetLength(0); r++)
            for (int c = 0; c < response.GetLength(1); c++)
                response[r, c] = String.Format("Synd: {0}, YoA: {1}, Qtr: {2}, ({3},{4})", SynNum, YoA, qtr, r, c);

        return XlCall.Excel(XlCall.xlUDF, "Resize", response);
        //return response;
    }
    public static object QMRItem(int SynNum, int YoA, string qtr, string item)
    {
        return (rnd.NextDouble() * (100.0 - 0.0) + 0.0) + " GBP (M)";
    }
}

私が理解していないのは、これらのメソッドが正しく呼び出されるようにアドインを設定する方法です。

4

1 に答える 1

1

したがって、答えは AsyncFunctions.dll と ExcelAsyncUtil.Initialize() を含めることです。.dna ファイルを次のように変更する必要があります。

<DnaLibrary Name="MyExcel Add-In" RuntimeVersion="v4.0">
    <ExternalLibrary Path="MyExcelLibrary.dll" />
    <ExternalLibrary Path="AsyncFunctions.dll" />
</DnaLibrary>

ライブラリを外部で使用するためにコンパイルするには、彼の配布フォルダーに移動し、Async フォルダー [Excel-Dna\Distribution\Samples\Async\AsyncFunctions] を見つけて、このソリューションを開いてライブラリをビルドする必要があります。Reactive Extensions Library を取得する必要がある場合があります。コマンド Install-Pakcage Rx-Main を使用して、NuGet 経由で取得できます。

于 2013-03-21T12:58:37.183 に答える