! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

[Sorting] 특정 행, 열 또는 범위 정렬하기 > 지식 쉐어링

본문 바로가기

Spread.NET

지식 쉐어링

WinForms [Sorting] 특정 행, 열 또는 범위 정렬하기

페이지 정보

작성자 GCK써니 작성일 2023-03-23 15:18 조회 518회 댓글 0건

본문

데이터를 정렬할 때, 주어진 열의 값을 기준으로 시트의 전체 행을 정렬하는 것이 일반적인 경우입니다. 그러나 간혹 특정 범위의 행 또는 특정 범위의 열만 정렬해야 할 수 있습니다. 


예를 들어, 한 매장에서 보유한 제품의 품목명과 재고 수량이 입력된 시트가 있다고 가정합니다. 또 마지막 행에는 재고 수량의 합계가 입력되어 있다고 가정합니다. 이때 해당 데이터를 재고 수량 기준으로 정렬할 경우, 재고 수량의 합계가 입력된 마지막 행은 정렬에 포함되지 않아야 합니다.


위와 같은 사례를 위하여 Spread.NET에서는 특정 행, 열 또는 범위 정렬 기능을 지원합니다.


범위에서 데이터를 정렬하는 방법에는 두 가지가 있습니다.



 바인딩 된 데이터 - SortRows, SortColumns 메서드 사용하기 


SortRows(또는 SortColumns) 메서드를 사용하여 하나 이상의 열(또는 행)을 기준으로 시트의 행(또는 열) 배열을 정렬합니다. 이는 데이터 모델에는 영향을 미치지 않으며 데이터가 표시되는 방식에만 영향을 미칩니다. 여러 오버로드는 행(또는 열)을 정렬하는 다양한 방법을 제공합니다. 이러한 메서드와 함께 SortInfo 객체를 사용하면, 정렬이 수행되는 방법을 추가로 사용자 지정할 수 있습니다.


 오버로드

 설명

 SortRows(Int32,Boolean,Boolean)

 특정 열을 기준으로 해당 시트의 모든 행을 정렬합니다.

 SortRows(Int32,Boolean,Boolean,IComparer)

 지정된 비교를 사용하여 특정 열을 기준으로 해당 시트의 모든 행을 정렬합니다.

 SortRows(Int32,Boolean,Boolean,IComparer,Boolean,Boolean)

 지정된 비교를 사용하여 특정 열을 기준으로 해당 시트의 모든 행을 정렬합니다. 상단/하단 고정 행의 정렬 여부를 설정할 수 있습니다.

 SortRows(Int32,Int32,SortInfo[])

 지정된 정렬 정보에 따라 해당 시트 내 하나의 행 범위를 정렬합니다.

 * SortColumns 메서드도 위와 유사합니다.


아래 예시에서는 두번째 컬럼의 값에 따라 시트의 모든 행을 정렬하고 있습니다. 열 인덱스는 0-base 이기 때문에, 두번째 열의 인덱스 값은 1이 됩니다. 이때, 정렬 표시기(Sort indicator)가 표시됩니다.


C#

fpspread1.ActiveSheet.SortRows(1,true,true);

VB.NET 

FpSpread1.ActiveSheet.SortRows(1,True,True)


아래 예시에서는 미리 정의된 정렬 정보 배열을 사용하여 행 인덱스가 12인 행부터 230개 행을 정렬합니다.


C#

FarPoint.Win.Spread.SortInfo[] sorter = new FarPoint.Win.Spread.SortInfo[1];
sorter[0] = new FarPoint.Win.Spread.SortInfo(0, false, System.Collections.Comparer.Default);
fpSpread1.ActiveSheet.SortRows(12, 230, sorter);

VB.NET

Dim sorter(1) As FarPoint.Win.Spread.SortInfo
sorter(0) = New FarPoint.Win.Spread.SortInfo(0, False, System.Collections.Comparer.Default)
fpSpread1.ActiveSheet.SortRows(12, 230, sorter)

 바인딩되지 않은 데이터 - SortRange 메서드 사용하기 

SortRange 메서드는 바인딩 되지 않은 데이터를 정렬할 때 사용합니다. 이 메서드는 데이터 모델에서 데이터를 이동하고 셀 수준 스타일을 함께 이동하여 셀 범위의 데이터를 정렬합니다. 즉, 데이터 원본에서 데이터를 이동하는 효과가 있으므로 바인딩된 데이터를 정렬할 때에는 사용하지 않습니다.

SortRange 메서드의 sortInfo 배열을 사용하여 데이터 정렬을 위한 여러 기준을 지정할 수 있습니다. 이 방법을 사용하면 시트의 전체 행이나 열보다 작은 하위 집합에서 데이터를 정렬할 수 있습니다. 자세한 내용은 SortInfo 객체 도움말 문서를 를 참조해주시기 바랍니다.

SortRange 메서드의 매개변수는 다음과 같습니다.
public bool SortRange( 
   int row,
   int column,
   int rowCount,
   int columnCount,
   bool byRows,
   SortInfo[] sortInfo
)

 매개변수

 설명

 row

 정렬할 셀 블록의 시작 행 인덱스

 column

 정렬할 셀 블록의 시작 열 인덱스

 rowCount

 셀 블록의 행 수

 columnCount

 셀 블록의 열 수

 by Row

 행(또는 열)별로 정렬하지 여부. byRow가 true이면 범위가 행별로 정렬됩니다. false이면 범위가 열별로 정렬됩니다.

 sortInfo

 정렬 기준 및 정렬 수행 방법이 포함된 SortInfo 객체


아래 예시 코드에서는 셀 범위 [A1:D2]를 행 별로 정렬할 때, A컬럼 기준 오름차순으로 정렬하고 있습니다. 

FarPoint.Win.Spread.SortInfo[] sort = new FarPoint.Win.Spread.SortInfo[1];
sort[0] = new FarPoint.Win.Spread.SortInfo(0, true, System.Collections.Comparer.Default);
fpSpread1.ActiveSheet.SetValue(0, 0, "C");
fpSpread1.ActiveSheet.SetValue(1, 0, "A");
fpSpread1.ActiveSheet.SetValue(2, 0, "E");
fpSpread1.ActiveSheet.SetValue(3, 0, "B");
fpSpread1.ActiveSheet.SetValue(0, 1, "3");
fpSpread1.ActiveSheet.SetValue(1, 1, "5");
fpSpread1.ActiveSheet.SetValue(2, 1, "1");
fpSpread1.ActiveSheet.SetValue(3, 1, "2");
fpSpread1.ActiveSheet.SortRange(0, 0, 4, 2, true, sort);

 

 



지금 바로 Spread.NET을 다운로드하여 직접 테스트해보세요!

spnet.png

 
  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.