2017-09-15 83 views
0

我正在使用一个相当大的Excel电子表格,并试图找到操纵数据的最快方法。电子表格有31列和15,000行。我需要提取大约15列信息。在处理这么多数据时,有没有一种最佳实践?我无法使用任何类型的数据库(如SQL)。搜索,排序和保存大型电子表格

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

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()); 
     } 
    } 
} 

任何帮助或指导,你可以提供将不胜感激。

回答

3

我将定义一个类来表示您的数据的一行,然后首先定义一个类实例的列表。

让我们说,这是你的整个组列:

名字|姓氏|电话| DOB |地址|国籍|年龄|

而你是唯一在FirstNameLastNameDOB感兴趣。

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

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

然后,创建一个类实例的列表。

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); 
} 

显然上面是排序的伪码,并且将不进行编译。这只是向你展示这个想法。这有一个很大的好处,就是将列中的一行数据与一行数据相关联,而不是为单独的列创建单独的列表,在这种情况下,您需要花费更多时间来查找相关数据。