我们可以将自定义对象从Excel传递到C#ExcelDNA吗?
我有一个对象:
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... }
这是可能的从VBA通过Excel DNA的C#?
您的.NET库可以将Shampoo
类导出并注册为COM可见types,然后您可以从VBA实例化为Dim sh = New Shampoo()
。 同样的其他types可以定义,如
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或任何东西使用 – 就像通过COM与VBA进行互操作的.NET对象上的方法一样。
到目前为止 – 没有涉及Excel的DNA 。 你可以用一个标准的.NET程序集来完成所有这些工作,这个程序集是使用正确的标志和属性进行编译的,并在你的机器上进行COM互操作。
但是,Excel-DNA也允许您的加载项成为COM服务器。 这意味着.xll可以托pipe您在库中定义的COM类,您的插件可以在不需要pipe理员访问的情况下进行COM注册(而不是安装程序),并且您的COM对象将与AppDomain剩下的加载项。 因此,Excel-DNA有助于粘合某些东西,但是VBA代码和.NET程序集之间的实际交互是标准的.NET-COM互操作,一旦你爬上了学习曲线。
- 无法通过在WinForm应用程序中使用BindingList将数据绑定到DataGridView
- 使用Excel DNA将Microsoft脚本运行时字典从VBA传递到C#
- Microsoft Interop Excelclosuresexcel的运行实例?
- C#Excel工作表不格式化单元格
- C#Excel自动化:使用SpecialCells()检索AutoFilter()后的行似乎不能正常工作
- 使用OpenXML打开Excel工作表时,文件包含损坏的数据错误
- 在MS office excel中使用java创build插件function区
- 如何在Excel中读取下拉列表的值并添加到数据表C#
- 如何使用C#读取pivottable excel?