6

私の現在のプロジェクトは、基本的にExcelスプレッドシートをWindowsアプリケーションに変換することです。テーブルとvlookupを使用してワークシートのセクションに出くわしました。テーブルが次のようになっていると仮定します(四半期ごとにこのようになり、下部に行が追加されます)。

ここに画像の説明を入力してください

C#でvlookupを模倣したいので、いくつかの異なる方法を考えることができますが、「最良の」方法を探しています。「最高」とは、コーディングが最も簡単で保守が容易であることを意味します。10秒未満で十分に機能する場合は、速度を意味するものではありません。これは、リージョン名とYr/Qrtが文字列として渡されるメソッドで発生します。それらを使用して、テーブルデータを格納するためにどのデータ構造を使用する必要がありますか?また、最小限のコードでそれを行うにはどうすればよいですか?

編集

これで、このデータを抽出する実際のExcelファイルを受け取りました。「yearQtr」フィールドとHRTCフィールドのみをC#で取得する方法に関するアドバイスをいただければ幸いです。

編集

このアプリケーションを実行しているマシンにはExcelがないことがわかりました。したがって、上記のファイルは、アプリケーションに読み込む前に別の形式に変更する必要があります(これは、Excelからcsvやxmlなどの形式でファイルを手動で保存することで処理されます。したがって、私の質問は、どのように取得するかです。 csvまたはxmlからの上記のデータ

4

2 に答える 2

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();     
}
于 2013-03-26T13:13:08.510 に答える
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;

        }
    }
于 2013-03-27T14:51:12.510 に答える