搜索、排序和保存大型电子表格

Searching, Sorting and Saving Large Spreadsheet

我正在处理一个相当大的 excel 电子表格,并试图找到处理数据的最快方法。该电子表格有 31 列和 15,000 行。我需要提取大约 15 列信息。处理这么多数据时是否有“最佳实践”?我无法使用任何类型的数据库(例如 SQL)。

我想过创建一个列表或字典,然后根据列将单元格值放入它们自己的 List/Dictionary 中,然后遍历这些,但我不确定它会多快或是否值得正在尝试。

List<string> columnOne = new List<string>();

foreach(DatagridViewColumn Column in DatagridView2.Column)
{
   if (Column[0].Value.toString().Contains("lastName")
    {
        foreach(DatagridViewRow row in DatagridView2.Rows)
        {
            columnOne.add(row.Value.toString());
        }
    }
}

如果您能提供任何帮助或指导,我们将不胜感激。

我会定义一个 class 来代表你的一行数据,然后是 class 实例的列表,首先。

假设,这是您的整个列集:

FirstName | LastName | Phone | DOB | Address | Nationality | Age |

而且您只对 FirstNameLastNameDOB 感兴趣。

所以我会像这样定义一个 class:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime DOB { get; set; }
}

然后创建一个包含 class 个实例的列表。

private List<Person> people = new List<Person>();

然后,我不会先遍历列,然后在循环中遍历行,而是反过来。

foreach(DatagridViewRow row in DatagridView2.Rows)
{
    Person p = new Person();
    p.FirstName = row[0];
    p.LastName = row[1];
    p.DOB = row[3];
    people.Add(p);
}

显然以上是伪代码,无法编译。这只是为了向您展示这个想法。与为单独的列创建单独的列表相反,将与一行相关的数据作为列表中的一项,这具有很大的优势,在这种情况下,您以后将不得不花费额外的时间来查找相关数据。