6

我目前的项目基本上是将 Excel 电子表格转换为 Windows 应用程序。我使用表格和 vlookups 遇到了工作表的一部分。假设表格看起来像这样(完全像这样,只有每个季度都在底部添加了一行):

在此处输入图像描述

我想模仿 C# 中的 vlookups,我可以想到几种不同的方法,但是我正在寻找“最好”的方法是什么。“最好”,我的意思是最容易编码和最可维护,我不是指速度,如果它在 10 秒内工作就足够了。这发生在将区域名称和 Yr/Qrt 作为字符串传入的方法中。使用这些,我应该使用哪些数据结构来存储表数据,以及如何用最少的代码来完成它?

编辑

我现在已经收到了我将从中提取这些数据的实际 excel 文件。任何有关如何仅使用 C# 获取“yearQtr”字段和 HRTC 字段的建议将不胜感激

编辑

刚刚发现他们运行这个应用程序的机器不会有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 回答