gpt4 book ai didi

excel - 工作表与工作表(1),我不能从 .net 互操作中做到这一点吗?

转载 作者:行者123 更新时间:2023-12-04 22:03:15 25 4
gpt4 key购买 nike

我们的对象模型包含一个名为 Unit 的类和一个名为 Units 的集合(存储在 Dictionary 中)。这些对象具有唯一的名称和键(它们最初来自强制执行此操作的 SQL 数据库),因此我添加了:

Public Units(N as String) As Unit ...
Public Units(K as Integer) As Unit...

它从 Units 集合中返回一个 Unit 对象。

在 Excel VBA 中,可以使用类似的方法引用大多数对象; Worksheets(1)返回第一张纸,而 Worksheets("Bob")返回命名的工作表。但是他们还有另一种方法, Worksheets ,它返回整个集合。好像他们有这个方法...
Public Worksheets() As List(Of Worksheet)

但是您不能在互操作中使用 List ( 对吗? )所以它更像...
Public Worksheets() As ArrayList

那么我如何在 .net 中使用互操作执行相同的基本 API 呢?也就是说,有三种方法...
Public Units(N as String) As Unit ...
Public Units(K as Integer) As Unit...
Public Units() As ArrayList...

据我了解,仅导出给定名称的第一种方法( 这是正确的吗? )。那么 Excel 是如何做到的,我可以在 .net 中伪造它吗?

最佳答案

VBA 的 Worksheets不是一种方法。它是一个类,Worksheets ,有一个 default property Item接受 Variant 类型的参数.没有重载(COM不支持),只是Variant可以同时保存数字或字符串。

如果您想在 VB.NET 中使用类似的结构,您可以拥有一个实现 default property as VB.NET understands it 的集合类。 ,这一次你可以重载它。

Public Class UnitsCollection

Default Public ReadOnly Property Item(ByVal i As Integer) As Unit
Get
Return ...
End Get
End Property

Default Public ReadOnly Property Item(ByVal i As String) As Unit
Get
Return ...
End Get
End Property

End Class

关于excel - 工作表与工作表(1),我不能从 .net 互操作中做到这一点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30444813/

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