DioDocs for Excel
DioDocs for Excel
行または列のグループ情報
機能 > グループ化 > 行または列のグループ情報

DioDocs for Excelでは、行または列グループの情報を取得するには、IOutlineインタフェースのRowGroupInfoまたはColumnGroupInfoプロパティを使用できます。

グループ化が存在するセル範囲を識別し、IGroupInfoインタフェースのExpandメソッドとCollapseメソッドを使用することでグループを展開または折りたたむことができます。

また、IGroupInfoインタフェースには、StartIndexEndIndexLevelParentChildren、およびIsCollapsedプロパティが用意され、グループの開始または終了インデックス、レベル、親、子、縮小状態などのグループ化情報を取得できます。

行グループ情報の取得

次のコードは、RowGroupInfoプロパティで行グループ情報を取得し、Collapseメソッドでグループの折りたたみ、および、行レベルが2行である行を識別する方法を示します。

C#
コードのコピー
//新しいワークブックを作成します
var workbook = new GrapeCity.Documents.Excel.Workbook();

var sheet = workbook.ActiveSheet;
object[,] data = new object[,]{
{"Name", "City", "Birthday", "Eye color", "Weight", "Height"},
{"Richard", "New York", new DateTime(1968, 6, 8), "Blue", 67, 165},
{"Nia", "New York", new DateTime(1972, 7, 3), "Brown", 62, 134},
{"Jared", "New York", new DateTime(1964, 3, 2), "Hazel", 72, 180},
{"Natalie", "Washington", new DateTime(1972, 8, 8), "Blue", 66, 163},
{"Damon", "Washington", new DateTime(1986, 2, 2), "Hazel", 76, 176},
{"Angela", "Washington", new DateTime(1993, 2, 15), "Brown", 68, 145}
};

sheet.Range["A1:F7"].Value = data;
sheet.Range["A:F"].ColumnWidth = 15;

sheet.Range["A:F"].Group();
sheet.Range["A:B"].Group();
sheet.Range["D:E"].Group();

//グループ情報を取得し、いくつかのグループを折りたたみます
var groupInfo = sheet.Outline.ColumnGroupInfo;
foreach (var item in groupInfo)
{
    if (item.Children != null)
    {
        foreach (var childItem in item.Children)
        {
            if (childItem.StartIndex > 2)
            {
                childItem.Collapse();
            }
        }
    }
}

//Excelファイルに保存します
workbook.Save("getcolumninfo.xlsx");

 

列グループ情報の取得

次のコードは、ColumnGroupInfoプロパティで列グループ情報を取得し、Collapseメソッドでグループを折りたたむ方法を示します。

C#
コードのコピー
//新しいワークブックを作成します
var workbook = new GrapeCity.Documents.Excel.Workbook();

var sheet = workbook.ActiveSheet;
IRange targetRange = sheet.Range["A1:C9"];
//データを設定します
targetRange.Value = new object[,]
{
{"Player", "Side", "Commander"},
{1, "Soviet", "AI"},
{2, "Soviet", "AI"},
{3, "Soviet", "Human"},
{4, "Allied", "Human"},
{5, "Allied", "Human"},
{6, "Allied", "AI"},
{7, "Empire", "AI"},
{8, "Empire", "AI"}
};

//小計
targetRange.Subtotal(groupBy: 2, //「Side」列でグループ化します
    subtotalFunction: ConsolidationFunction.Count,
    totalList: new[] { 2 } //「Side」列の合計を表示します
    );

targetRange.AutoFit();

//グループ情報を取得し、いくつかのグループを折りたたみます
var groupInfo = sheet.Outline.RowGroupInfo;
var rowInfo = new Dictionary<int, int>();
foreach (var item in groupInfo)
{
    if (item.Children != null)
    {
        foreach (var childItem in item.Children)
        {
            if (childItem.StartIndex > 3)
            {
                childItem.Collapse();
            }
            if (childItem.Level == 2)
            {
                rowInfo.Add(childItem.StartIndex, childItem.EndIndex);
            }
        }
    }
}

StringBuilder builder = new StringBuilder();
foreach (var item in rowInfo)
{
    builder.Append("row " + (item.Key + 1) + " to row " + (item.Value + 1) + ", ");
}

sheet.Range["A15"].Value = "The rows where the group level is 2 are: " + builder.ToString();
sheet.Range["A15"].RowHeight = 25;
sheet.Range["A15"].Font.Color = Color.Red;
sheet.Range["A15"].Font.Size = 15;

//Excelファイルに保存します
workbook.Save("getrowgroupinfo.xlsx");