gpt4 book ai didi

c# - 我们可以将自定义对象从 Excel 传递到 C# ExcelDNA 吗?

转载 作者:行者123 更新时间:2023-11-30 17:09:18 26 4
gpt4 key购买 nike

我有一个对象:

public class Shampoo
{
public string Name {get;set;}
public string Id {get;set;}
public string PriceRegion {get;set;}
}

我可以通过 Excel DNA 将此对象传递给 C# 中的方法吗:

C# 方法是:

public static string PassShampoo(Shampoo shampoo)
{
//Some Code...
}

是否可以通过 Excel DNA 从 VBA 到 C#?

最佳答案

您的 .NET 库可以将 Shampoo 类导出并注册为 COM 可见类型,然后您可以从 VBA 将其实例化为 Dim sh = New Shampoo()。同样可以定义其他类型,例如

public class Shopper()
{
public string ReadLabel(Shampoo shampoo)
{
return shampoo.Name;
}
}

然后 New Shopper() 可以传递给 shampoo:

Dim anne As Shopper = New Shopper()
Dim dove As Shampoo = New Shampoo()

Dim label As String
label = anne.ReadLabel(dove)

使用 Shampoo 的方法(上面的 Shopper.ReadLabel)将不是static 并且不能作为 UDF 或任何东西用于 Excel - 就像通过 VBA 的 COM 互操作调用的 .NET 对象上的方法一样。

到目前为止 - 没有 Excel-DNA涉及。您可以使用标准的 .NET 程序集完成所有这些操作,该程序集使用正确的标志和属性进行编译并在您的计算机上注册为 COM 互操作。

但是,Excel-DNA 还允许您的加载项成为 COM 服务器。这意味着 .xll 可以承载您在库中定义的 COM 类,您的加载项可以进行 COM 注册(而不是安装程序)而无需管理员访问权限,并且您的 COM 对象将位于与其余的加载项。所以 Excel-DNA 在粘合方面有点帮助,但 VBA 代码和 .NET 程序集之间的实际交互是标准的 .NET 到 COM 互操作,一旦你稍微攀登了学习曲线,它就会很好地工作.

关于c# - 我们可以将自定义对象从 Excel 传递到 C# ExcelDNA 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13040919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com