搜索、排序和保存大型电子表格
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 |
而且您只对 FirstName
、LastName
和 DOB
感兴趣。
所以我会像这样定义一个 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);
}
显然以上是伪代码,无法编译。这只是为了向您展示这个想法。与为单独的列创建单独的列表相反,将与一行相关的数据作为列表中的一项,这具有很大的优势,在这种情况下,您以后将不得不花费额外的时间来查找相关数据。
我正在处理一个相当大的 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 |
而且您只对 FirstName
、LastName
和 DOB
感兴趣。
所以我会像这样定义一个 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);
}
显然以上是伪代码,无法编译。这只是为了向您展示这个想法。与为单独的列创建单独的列表相反,将与一行相关的数据作为列表中的一项,这具有很大的优势,在这种情况下,您以后将不得不花费额外的时间来查找相关数据。