2013-03-26 39 views
6

我當前的項目基本上是將Excel電子表格轉換爲Windows應用程序。我使用表和vlookups查看了工作表的一部分。假設表看起來像這樣(正是這樣才每季度額外添加一行到下):從表格中查找值並將其填入數據的正確方法

enter image description here

我想模仿在C#中vlookups,我能想到的幾種不同的方式,但是我在尋找什麼是「最好」的方式。 「最好」,我的意思是最簡單的代碼和最易維護,我不是說速度,如果它在10秒內工作就足夠好。這發生在具有區域名稱和Yr/Qrt作爲字符串傳入的方法中。使用這些數據結構,我應該使用哪些數據結構來存儲表格數據,以及如何以最少量的代碼實現?

編輯

我現在已經收到了實際的Excel文件,我將提取這些數據。如何讓只有「yearQtr」字段和HRTC領域用C#將大大任何意見讚賞

編輯

才發現,原來他們的機器上運行這個應用程序將不會有出類拔萃。因此,上面顯示的文件在讀入應用程序之前必須更改爲另一種格式(這將通過手動將文件從excel保存爲csv或xml或其他格式來處理。所以我想我的問題是如何獲取上述數據從一個CSV或XML

+3

你可以有一個'清單'的每一行,並把它們都存儲在'詞典<字符串,列表>'由年/ QRT字符串鍵。然後你可以查看'List '爲特定的Yr/Qrt,並且使用'List '的索引來獲得你想要的列。 – 2013-03-26 13:03:15

+2

@HosseinNarimaniRad我可以但我想避免人們專注於改進我的解決方法。我的代碼有效,但我認爲這不是構建問題的最佳方式。 – jth41 2013-03-26 13:04:36

+0

Doe這需要動態嗎?例如,總是隻有4列?或者可以在列中擴大/縮小。 – Derek 2013-03-26 13:49:38

回答

1

我我目前正在使用這種架構解決方案來滿足我的數據需求每次我需要它的新表(就像我在問題中所說的,速度無關緊要)。該表僅適用於每個表的特定區域。正如你所看到的,我還沒有弄清楚Excel數據提取部分。

class Table 
    { 
     Dictionary<String, double> _regionTimeValues; 
     String _region; 

     public Table(String region) 
     { 
      _regionTimeValues = new Dictionary<string, double>(); 
      _region = region; 
      suckInValues(); 
     } 

     private void suckInValues() 
     { 
      //Go find the File, get the appropriate Values 
      //for each value found 
     } 


     internal double locateRelevantValue(string yearQuarter) 
     { 
      double locatedValue = 0.0; 
      _regionTimeValues.TryGetValue(yearQuarter,out locatedValue); 
      return locatedValue; 

     } 
    } 
1

你可以這樣做的:

public class MyClass 
{ 
    public List<string> columns; 
} 

然後在形式,你可以做這樣的一看,

List<MyClass> myValues; 

public List<MyClass> LookUp(string value, int columnIndex) 
{ 
    return this.myValues.Where(
        input => input.columns[columnIndex] == value 
          ).ToList();  
} 
相關問題