DioDocs for Excel には、ワークシート内のセル範囲、値、色、またはアイコンに基づいてデータの並べ替えを実行する Sortメソッドがあります。Applyメソッドを使用して、選択されたソート状態を適用し、結果を表示します。
DioDocs for Excel では、以下のソートを利用できます。
値によるソートを実行すると、データを順に並べることができます。SortOrientation プロパティを使用して、ソートの方向カテゴリ、つまり列または行を指定します。
値でソートするには、次のコード例を参照してください。
C# |
コードのコピー
|
---|---|
//Sort()を使用して値でソートします worksheet.Range["A1:B4"].Sort(worksheet.Range["A1:A4"], orientation: SortOrientation.Columns); |
値による複数列のソートは、1 つのコード行を使用して複数の列をソートします。ValueSortFieldメソッドを使用して、1 つのステートメント内に複数のソートフィールドインスタンスを定義します。SortOrderプロパティを使用して、列の向きとして昇順または降順を指定します。
複数の列を値でソートするには、次のコード例を参照してください。
C# |
コードのコピー
|
---|---|
//Sort()を使用して値で複数の列をソートします worksheet.Range["A1:B4"].Sort(SortOrientation.Columns, false, new ValueSortField[] { new ValueSortField(worksheet.Range["A1:A4"],SortOrder.Descending), new ValueSortField(worksheet.Range["B1:B4"], SortOrder.Ascending)}); |
ソートは一般的なタスクですが、すべてのデータが一般的な昇順および降順のルールに準拠しているわけではありません。たとえば、月をアルファベット順にソートしても、意味のある方法とは言えません。この場合、DioDocs for Excel はカスタムソートを提供します。カスタムソートの場合は、ValueSortFieldコンストラクタで値の文字列を定義します。
カスタムソートを実装するには、次のコード例を参照してください。
C# |
コードのコピー
|
---|---|
//カスタムソート値の文字列を指定します var sortkey = new ValueSortField(worksheet.Range["A1:A2"], "1,2,3"); worksheet.Range["A2:A6"].Sort(SortOrientation.Columns, false, sortkey); |
セル背景によるソートは、背景色、パターン、パターン色、グラデーション色、グラデーション角度に基づいてソートを行います。ただし、セル色に基づいてセル背景ソートを行うことはできません。
セル背景でソートするには、次のコード例を参照してください。
C# |
コードのコピー
|
---|---|
//範囲にパターンを割り当てます worksheet.Range["A3"].Interior.Pattern = Pattern.LinearGradient; worksheet.Range["A4"].Interior.Pattern = Pattern.LinearGradient; worksheet.Range["A5"].Interior.Pattern = Pattern.LinearGradient; worksheet.Range["A6"].Interior.Pattern = Pattern.LinearGradient; //範囲に値を定義します worksheet.Range["A3"].Value = 1; worksheet.Range["A4"].Value = 2; worksheet.Range["A5"].Value = 3; worksheet.Range["A6"].Value = 4; //範囲にグラデーションを割り当てます ( worksheet.Range["A3"].Interior.Gradient as ILinearGradient).ColorStops[0].Color = Color.FromArgb(255, 0, 0); ( worksheet.Range["A3"].Interior.Gradient as ILinearGradient).ColorStops[1].Color = Color.FromArgb(146, 208, 80); ( worksheet.Range["A3"].Interior.Gradient as ILinearGradient).Degree = 90; ( worksheet.Range["A4"].Interior.Gradient as ILinearGradient).ColorStops[0].Color = Color.FromArgb(255, 0, 255); ( worksheet.Range["A4"].Interior.Gradient as ILinearGradient).ColorStops[1].Color = Color.FromArgb(146, 208, 90); ( worksheet.Range["A4"].Interior.Gradient as ILinearGradient).Degree = 90; ( worksheet.Range["A5"].Interior.Gradient as ILinearGradient).ColorStops[0].Color = Color.FromArgb(255, 0, 255); ( worksheet.Range["A5"].Interior.Gradient as ILinearGradient).ColorStops[1].Color = Color.FromArgb(146, 208, 180); ( worksheet.Range["A5"].Interior.Gradient as ILinearGradient).Degree = 90; ( worksheet.Range["A6"].Interior.Gradient as ILinearGradient).ColorStops[0].Color = Color.FromArgb(255, 0, 255); ( worksheet.Range["A6"].Interior.Gradient as ILinearGradient).ColorStops[1].Color = Color.FromArgb(146, 208, 90); ( worksheet.Range["A6"].Interior.Gradient as ILinearGradient).Degree = 90; // worksheet.Sort.SortFields.Add(new CellColorSortField(worksheet.Range["A1:A2"], worksheet.Range["A6"].DisplayFormat.Interior, SortOrder.Ascending)); worksheet.Sort.Range = worksheet.Range["A3:A6"]; worksheet.Sort.Orientation = SortOrientation.Columns; worksheet.Sort.Apply(); |
フォントの色によるソートは、セルの表示形式のフォント色によってソートを行います。ただし、セル色に基づいてソートは実行されません。
フォント色でソートするには、次のコード例を参照してください。
C# |
コードのコピー
|
---|---|
//範囲に値を割り当てます worksheet.Range["A1"].Value = 2; worksheet.Range["A2"].Value = 1; worksheet.Range["A3"].Value = 1; worksheet.Range["A4"].Value = 3; worksheet.Range["B1"].Value = 2; worksheet.Range["B2"].Value = 1; worksheet.Range["B3"].Value = 1; worksheet.Range["B4"].Value = 3; //範囲に色を割り当てます worksheet.Range["B1"].Font.Color = Color.FromArgb(0, 128, 0); worksheet.Range["B2"].Font.Color = Color.FromArgb(128, 0, 0); worksheet.Range["B3"].Font.Color = Color.FromArgb(0, 0, 128); worksheet.Range["B4"].Font.Color = Color.FromArgb(128, 128, 0); //色によるソートを定義します worksheet.Sort.SortFields.Add(new FontColorSortField(worksheet.Range["B1:B4"], worksheet.Range["B1"].DisplayFormat.Font.Color, SortOrder.Descending)); worksheet.Sort.Range = worksheet.Range["A1:B4"]; worksheet.Sort.Orientation = SortOrientation.Columns; worksheet.Sort.Apply(); |
アイコンによるソートは、セルの条件付き書式設定アイコンに基づいてソートを行います。
アイコンでソートするには、次のコード例を参照してください。
C# |
コードのコピー
|
---|---|
//範囲に値を割り当てます worksheet.Range["A1"].Value = 2; worksheet.Range["A2"].Value = 1; worksheet.Range["A3"].Value = 1; worksheet.Range["A4"].Value = 3; worksheet.Range["B1"].Value = 2; worksheet.Range["B2"].Value = 1; worksheet.Range["B3"].Value = 1; worksheet.Range["B4"].Value = 3; //アイコンによるソートを定義します IIconSetCondition iconset = worksheet.Range["B1:B4"].FormatConditions.AddIconSetCondition(); iconset.IconSet = workbook.IconSets[IconSetType.Icon3TrafficLights1]; worksheet.Sort.SortFields.Add(new IconSortField(worksheet.Range["B1:B4"], workbook.IconSets[IconSetType.Icon3TrafficLights1][0], SortOrder.Descending)); worksheet.Sort.Range = worksheet.Range["A1:B4"]; worksheet.Sort.Orientation = SortOrientation.Columns; worksheet.Sort.Apply(); |