C# 显示数组数据Excel Dna

C# 显示数组数据Excel Dna,c#,.net-4.0,excel-dna,C#,.net 4.0,Excel Dna,我在使用带C#的Excel Dna显示数据时遇到问题。我有一个函数,它接收数据并对其进行处理以生成一个表,所以我编写了一个测试函数来显示数据,但我无法得到一个值。误差为#值 公共类函数:IExcelAddIn { 公共静态字符串用户名{get;set;} 公共静态字符串密码{get;set;} 公共静态随机rnd=新随机(); 公开作废自动打开() { ExcelAsyncUtil.Initialize(); } 公共无效自动关闭() { ExcelAsyncUtil.Uninitialize(

我在使用带C#的Excel Dna显示数据时遇到问题。我有一个函数,它接收数据并对其进行处理以生成一个表,所以我编写了一个测试函数来显示数据,但我无法得到一个值。误差为#值

公共类函数:IExcelAddIn
{
公共静态字符串用户名{get;set;}
公共静态字符串密码{get;set;}
公共静态随机rnd=新随机();
公开作废自动打开()
{
ExcelAsyncUtil.Initialize();
}
公共无效自动关闭()
{
ExcelAsyncUtil.Uninitialize();
}
[ExcelFunction(Description=“我的第一个Excel DNA函数”)]
公共静态字符串MyFirstFunction(字符串名称)
{
返回“Hello”+“name+”;
}
公共静态字符串ShowCurrentUser()
{
return(String.IsNullOrWhiteSpace(Username))?“没有人登录。”:Username;
}
公共静态字符串登录(字符串用户、字符串密码)
{
const string connectionString=“server=localhost;userid={0};password={1};”;
MySqlConnection=newmysqlconnection(String.Format(connectionString,user,password));
字符串输出=”;
尝试
{
connection.Open();
用户名=用户;
密码=密码;
output=“成功登录!”;
}
捕获(例外e)
{
output=“Errors:+e.ToString();
}
最后
{
connection.Close();
}
返回输出;
}
公共静态对象QMRTable(int-SynNum、int-YoA、int-qtr、int-TabNum)
{
对象[,]响应=新对象[16,3];
for(int r=0;r

似乎我不理解的是如何设置外接程序以正确调用这些方法。

因此,答案是包括AsyncFunctions.dll以及ExcelAsyncUtil.Initialize()。您需要将.dna文件更改为如下所示:

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


要编译库供外部使用,您必须进入他的分发文件夹并找到异步文件夹[Excel Dna\Distribution\Samples\Async\AsyncFunctions],然后打开此解决方案并构建库。您可能需要获取被动扩展库。您可以通过NuGet通过命令Install Pakcage Rx Main获得它。

它在没有Resize调用的情况下工作吗?如果您使用的是最新发行版中的Resize,那么在AutoOpen处理程序中是否有AsyncUtil.Initialize()调用?好的,我没有意识到我需要它,我将尝试一下,看看是否有效。发生的情况是,我没有可用的ArrayResizer类,因此我的调用在那里失败。通过包含ArrayResizer类,我能够使其正常工作,现在唯一要做的就是找出如何使用源代码中的dll实现它,而不是将他的代码复制到我的代码中,您也可以将ArrayResizer.cs代码放在自己的库中。我编译了库,然后添加了代码,以便将创建者代码与我的代码分开,以便于开发,并确保对原始编写者的信任。
<DnaLibrary Name="MyExcel Add-In" RuntimeVersion="v4.0">
    <ExternalLibrary Path="MyExcelLibrary.dll" />
    <ExternalLibrary Path="AsyncFunctions.dll" />
</DnaLibrary>