2017-09-15 13 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

데이터의 한 행을 나타내는 클래스를 정의한 다음, 먼저 해당 클래스 인스턴스의 목록을 정의합니다. |

FIRSTNAME :

이 컬럼의 전체 집합입니다,의 말합시다 성 | 전화 | DOB | 주소 | 국적 | 나이 |

그리고 당신은 FirstName, LastNameDOB에만 관심이있다.

그래서 난과 같이 클래스를 정의합니다 :

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

물론 위의 코드는 일종의 의사 코드이며 컴파일되지 않습니다. 아이디어를 보여 주기만하면됩니다. 이는 별도의 열에 대해 별도의 목록을 만드는 것과는 달리 목록에서 하나의 행과 관련된 데이터를 갖는 큰 이점이 있습니다.이 경우 나중에 관련 데이터를 찾으려면 추가 길이로 이동해야합니다.