我正在编写 C# (Visual Studio Express 2012) 并使用 ExcelIntegration。我想让ExcelFunction
一个用户定义的对象返回到一个单元格。我还想要一个用户ExcelFunction
定义的对象作为输入。
这是我的代码示例。这不起作用,从 Excel 中看不到任何功能 (CreateDog
或)。GetName
namespace Test
{
public class Dog
{
public Dog(string name)
{
Name = name;
}
public readonly string Name;
}
public class TestClass
{
[ExcelFunction]
public static Dog CreateDog(string name)
{
return new Dog(name);
}
[ExcelFunction]
public static string GetName(Dog dog)
{
return dog.Name;
}
}
}
在昨天的回答之后,我添加了一个字典。我已将代码修改如下。这行得通。我现在的问题是如何使这个通用。我可以以某种方式修改 ExcelDNA 代码来自动为我做这个字典的东西吗?
命名空间 ExcelIntegration { public class Dog { public Dog(string name) { Name = name; }
public readonly string Name;
}
public class TestClass
{
static Dictionary<string, Dog> DogStore;
[ExcelFunction]
public static string CreateDog(string name)
{
Dog dog = new Dog(name);
string key = dog.ToString() + "_" + DateTime.Now.Ticks.ToString();
try
{
if (DogStore.ContainsKey(key) == false) DogStore.Add(key, dog);
}
catch (NullReferenceException)
{
DogStore = new Dictionary<string, Dog>();
if (DogStore.ContainsKey(key) == false) DogStore.Add(key, dog);
}
return key;
}
[ExcelFunction]
public static string GetName(string dogKey)
{
Dog dog = DogStore[dogKey];
return dog.Name;
}
}
}