2012-11-14 62 views
0

我有一個C#應用程序,權利事件結果到工作簿和工作表。輸入事件結果的窗體包含每個特定結果字段的文本框(即名稱,分數,時間,競爭對手編號等),並且大約有19行這些文本框可供用戶輸入結果。這些文本框中的很多字段在用戶註冊了比賽名稱,競爭對手編號,地址等競爭對手後自動填充。我的主要問題是有幾個比賽在三個不同的類別下運行,我需要我的應用程序以某種方式從每個類別的每個事件中找到最好的總分/時間。目前,我正在使用excel interop和arraylists for循環將註冊表單中textbox字段的值放到excel電子表格中。然後,我使用range.sort方法對Excel電子表格中的值進行排序。我在概念上設計了一種方法,可以執行我正在嘗試完成的事情,因爲事件將放在不同的工作表上。有沒有人對我應該考慮的行動有任何建議。我知道這更像是一個關於excel interop的概念性問題,但我真的無法包含代碼,因爲涉及太多。謝謝你的幫助。排序來自多個Excel工作簿的記錄 - C#Excel Interop

+0

我想你可能需要給您的數據是如何組織的大致原理遺憾。我不確定我是否看到分開排列每個電子表格的問題,因爲它們將按相同的順序排序,因此它們都按照相同的順序排序。如果這是您的要求,您可以同時打開多個工作簿。 –

回答

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表)

列表

現在,您可以使用LinQEvent & Category並使用前3(或其他)ComparisonVal值來分組數據。

稍後,您可以隨時使用Epplus或Interop將自定義對象數據輸出到Excel,但如果您需要以這種方式存儲它,但我會依靠.Net爲您完成所有繁重工作,因爲您擁有與您的代碼/變量靈活性等

希望最大程度上這也解釋了我的想法和VB代碼:)