DioDocs for Excelでは、行または列グループの情報を取得するには、IOutlineインタフェースのRowGroupInfoまたはColumnGroupInfoプロパティを使用できます。
グループ化が存在するセル範囲を識別し、IGroupInfoインタフェースのExpandメソッドとCollapseメソッドを使用することでグループを展開または折りたたむことができます。
また、IGroupInfoインタフェースには、StartIndex、EndIndex、Level、Parent、Children、および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"); |