SPREAD for WPF 4.0J - GcSpreadSheet
ソートの基本
MESCIUS SPREAD for WPF 4.0J - GcSpreadSheet > 開発者ガイド > ソート > ソートの基本

GcSpreadSheetは、ワークシート内でのデータ並べ替えをサポートしています。この機能を利用すると、データを効率的に整理し、素早く分析できます。

並べ替えはセル値のデータ型に基づいて実行されます。たとえば、DateTime データ型のセルを並べ替える場合、日付順にデータが並びます。同様に、文字列データのセルはアルファベット順に並べ替えられます。

ワークシート内の1列または複数列でデータを並べ替えるには、ISort インターフェースの Apply メソッドを使用します。並べ替え順序は、SortOrder 列挙体を使用して昇順(「A」から「Z」、「0」から 「9」)または降順(「Z」から「A」、「9」から「0」)として指定できます。

並べ替えは、セル値(例:テキスト、数値)、フォント色、セルの色、または条件付き書式のアイコンに基づいて実行できます。これらの基準を設定するには、ISortField インターフェースの SortOn プロパティを使用します。さらに、カスタム並べ替えをデータに適用することも可能です。たとえば、SortDataOption 列挙体の TextAsNumbers フィールドを使用すると、テキストを数値として並べ替えることができます。

以下の例は、「Name」列を昇順に並べ替えたケースを示しています。

コードのコピー
// データを設定します。
string[,] data = new string[,]
{
{ "CUPSCA0005", "Starlight Teacup & Saucer", "9", "2000" },
{ "CUPBLM0007", "Blossom Teacup & Saucer", "60", "130" },
{ "CUPCLD0008", "Tanabata-Star Teacup & Saucer", "35", "175" },
{ "CUPSCO0004", "Coast Teacup & Saucer", "10", "120" },
{ "CUPFRL0010", "Floral Teacup & Saucer", "500", "85" },
{ "CUPGDN0014", "Gardenia Teacup & Saucer", "120", "100" },
{ "CUPMNG0006", "Mango Teacup & Saucer", "150", "110" },
{ "CUPMST0012", "Mystic Teacup & Saucer", "90", "160" },
{ "CUPOTK0013", "Otokoyama Teacup & Saucer", "25", "210" },
{ "CUPRSE0011", "Rose Garden Teacup & Saucer", "75", "150" },
{ "CUPSTR0009", "Aoba Teacup & Saucer", "20", "145" },
{ "CUPTND0002", "Tanabata-decorated teacup and saucer", "400", "90" },
{ "CUPTNF0003", "Tanabata-Festival Tea Cup & Saucer", "490", "60" },
{ "CUPTNS0001", "Cloudburst Teacup & Saucer", "200", "90" },
{ "CUPWLD0015", "Wildflower Teacup & Saucer", "30", "180" }
};

spreadSheet1.Workbook.ActiveSheet.ColumnHeader.Cells[0, 0].Value = "ID";
spreadSheet1.Workbook.ActiveSheet.ColumnHeader.Cells[0, 1].Value = "Name";
spreadSheet1.Workbook.ActiveSheet.ColumnHeader.Cells[0, 2].Value = "Quantity";
spreadSheet1.Workbook.ActiveSheet.ColumnHeader.Cells[0, 3].Value = "UnitPrice";

for (int i = 0; i < data.GetLength(0); i++)
{
    for (int j = 0; j < data.GetLength(1); j++)
    {
        spreadSheet1.Workbook.ActiveSheet.SetValue(i, j, data[i, j]);
    }
}

// ワークシートに並べ替えを適用します。
spreadSheet1.Workbook.ActiveSheet.Sort.SortFields.Add("B", SortOn.Value, SortOrder.Ascending);
spreadSheet1.Workbook.ActiveSheet.Sort.Apply();
コードのコピー
' データを設定します。
Dim data As String(,) = {
    {"CUPSCA0005", "Starlight Teacup & Saucer", "9", "2000"},
    {"CUPBLM0007", "Blossom Teacup & Saucer", "60", "130"},
    {"CUPCLD0008", "Tanabata-Star Teacup & Saucer", "35", "175"},
    {"CUPSCO0004", "Coast Teacup & Saucer", "10", "120"},
    {"CUPFRL0010", "Floral Teacup & Saucer", "500", "85"},
    {"CUPGDN0014", "Gardenia Teacup & Saucer", "120", "100"},
    {"CUPMNG0006", "Mango Teacup & Saucer", "150", "110"},
    {"CUPMST0012", "Mystic Teacup & Saucer", "90", "160"},
    {"CUPOTK0013", "Otokoyama Teacup & Saucer", "25", "210"},
    {"CUPRSE0011", "Rose Garden Teacup & Saucer", "75", "150"},
    {"CUPSTR0009", "Aoba Teacup & Saucer", "20", "145"},
    {"CUPTND0002", "Tanabata-decorated teacup and saucer", "400", "90"},
    {"CUPTNF0003", "Tanabata-Festival Tea Cup & Saucer", "490", "60"},
    {"CUPTNS0001", "Cloudburst Teacup & Saucer", "200", "90"},
    {"CUPWLD0015", "Wildflower Teacup & Saucer", "30", "180"}
}

spreadSheet1.Workbook.ActiveSheet.ColumnHeader.Cells(0, 0).Value = "ID"
spreadSheet1.Workbook.ActiveSheet.ColumnHeader.Cells(0, 1).Value = "Name"
spreadSheet1.Workbook.ActiveSheet.ColumnHeader.Cells(0, 2).Value = "Quantity"
spreadSheet1.Workbook.ActiveSheet.ColumnHeader.Cells(0, 3).Value = "UnitPrice"

For i As Integer = 0 To data.GetLength(0) - 1
    For j As Integer = 0 To data.GetLength(1) - 1
        spreadSheet1.Workbook.ActiveSheet.SetValue(i, j, data(i, j))
    Next
Next

' ワークシートに並べ替えを適用します。
spreadSheet1.Workbook.ActiveSheet.Sort.SortFields.Add("B", SortOn.Value, SortOrder.Ascending)
spreadSheet1.Workbook.ActiveSheet.Sort.Apply()
 複数列での並べ替え
複数列で並べ替えるには、複数の並べ替えフィールドを SortFields コレクションに追加します。並べ替えは、フィールドが追加された順に実行されます。
コードのコピー
// 「Country」列で昇順に並べ替えを追加します。
spreadSheet1.Workbook.ActiveSheet.Sort.SortFields.Add("Country", SortOn.Value, SortOrder.Ascending);

// 「City」列で昇順に並べ替えを追加します。
spreadSheet1.Workbook.ActiveSheet.Sort.SortFields.Add("City", SortOn.Value, SortOrder.Ascending);
コードのコピー
' 「Country」列で昇順に並べ替えを追加します。
spreadSheet1.Workbook.ActiveSheet.Sort.SortFields.Add("Country", SortOn.Value, SortOrder.Ascending)

' 「City」列で昇順に並べ替えを追加します。
spreadSheet1.Workbook.ActiveSheet.Sort.SortFields.Add("City", SortOn.Value, SortOrder.Ascending)