我有 ac# 应用程序将权限事件结果到工作簿和工作表中。输入事件结果的窗口窗体包含每个特定结果字段的文本框(即名称、分数、时间、竞争对手编号等),用户可以在其中输入结果的这些文本框大约有 19 行. 许多文本框字段是在用户为赛事注册参赛者后自动填充的,例如姓名、参赛者编号、地址等。我的主要问题是有几场比赛在三个不同的类别下进行,我需要我的申请以某种方式从每个类别的每个事件中找到最佳总分/时间。目前,我正在使用 for 循环中的 excel 互操作和数组列表将注册表单上的文本框字段中的值放入 excel 电子表格。然后,我使用 range.sort 方法对 Excel 电子表格中的值进行排序。我无法在概念上设计一种方式来执行我想要完成的事情,因为事件将在不同的工作表上。有没有人对我应该研究的行动方案有任何建议。我知道这更多是关于 excel 互操作的概念性问题,但我真的无法包含此代码,因为涉及的内容太多。谢谢你的帮助。t 包含此代码,因为涉及的内容太多。谢谢你的帮助。t 包含此代码,因为涉及的内容太多。谢谢你的帮助。
问问题
205 次
1 回答
1
...我不会用 Excel 做这个。我宁愿通过一个可以保存您需要的所有数据的自定义对象来做到这一点。例如:
Public Class EventData
Public Property CompetitorName As String
' ... Other Info you've inputted
Public Property EventName As String = ""
Public Property Category As String = ""
Public Property Score As Double = -1
Public Property Time As Double = -1
Public ReadOnly Property ComparisonVal As Double
Get
' This could be either Score or Time
' Decide based upon which one <> -1 or something along those lines
End Get
End Property
End Class
现在您可以在您的代码中执行以下操作:
Dim AllData as New List(Of EventData)
并用所有必要的数据填充列表(就像你在 Excel 表中所做的那样)
现在,您可以根据需要使用&LinQ
分组并获取前 3 个(或其他)值来提取数据。Event
Category
ComparisonVal
稍后,如果您需要以这种方式存储自定义对象数据,您始终可以使用Epplus或 Interop 将其输出到 Excel,但我会依靠 .Net 为您完成所有繁重的工作,因为您拥有最大程度的灵活性使用您的代码/变量等
希望这能解释我的想法并对 VB 代码感到抱歉:)
于 2012-11-14T21:19:45.587 回答