DioDocs for Excel
DioDocs for Excel
テンプレート型セル
機能 > ワークシート > セル型の処理 > テンプレート型セル

DioDocs for Excelは、範囲テンプレートとして機能するワークシートのセル範囲を指定することができるテンプレート型セルをサポートしています。範囲テンプレートは単一のセルと見なされ、必要に応じてセルまたはセル範囲に適用することができます。範囲テンプレートへのデータは、データソースから読み込むことができます。

この機能は、以下の画像に表示されているように特定のデータ範囲を同一の構造で表示したい場合、複数の範囲に同じスタイルを何度も設定する必要がないため、特に便利です

上記の範囲テンプレートをセル範囲「A1:B2」に適用し、データソースからデータを読み込むと、次のような表示になります。

テンプレート型セルを作成するには、次の手順を実行する必要があります。

  1. 範囲テンプレートの作成: ワークシートにて、範囲テンプレートのレイアウトを設計します。BindingPathプロパティを使用してテンプレートとデータをバインドできます。
  2. データの構成: テンプレートとバインドするデータソースを構成します。
  3. テンプレート型セルの作成と適用: RangeTemplateCellTypeメソッドを使用してテンプレート型セルを作成し、任意のセル範囲に適用します。

次のサンプルコードは、テンプレート型セルを作成する方法を示します。

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

    var sheet1 = workbook.ActiveSheet;
    //手順1)範囲テンプレートを設計するためのワークシートを作成します
    var sheet2 = workbook.Worksheets.Add();

    //手順2)データを構成します
    var record1 = new PersonalAssets
    {
        Name = "Peyton",
        Savings = 25000,
        Shares = 55000,
        Stocks = 15000,
        House = 250000,
        Bonds = 11000,
        Car = 7500
    };
    var record2 = new PersonalAssets
    {
        Name = "Icey",
        Savings = 30000,
        Shares = 45000,
        Stocks = 25000,
        House = 20000,
        Bonds = 18000,
        Car = 75000
    };
    var record3 = new PersonalAssets
    {
        Name = "Walter",
        Savings = 20000,
        Shares = 4000,
        Stocks = 95000,
        House = 30000,
        Bonds = 10000,
        Car = 56000
    };
    var record4 = new PersonalAssets
    {
        Name = "Chris",
        Savings = 70000,
        Shares = 85000,
        Stocks = 35000,
        House = 20000,
        Bonds = 15000,
        Car = 45000
    };

    //セルのバインドパスを設定します
    sheet2.Range["A1:C1"].Merge();
    sheet2.Range["A1:C1"].HorizontalAlignment = HorizontalAlignment.Center;
    sheet2.Range["A1:C1"].VerticalAlignment = VerticalAlignment.Center;

    sheet2.Range["A1"].ColumnWidthInPixel = 100;
    sheet2.Range["A1"].BindingPath = "Name";
    sheet2.Range["A1"].Font.Name = "Arial";
    sheet2.Range["A1"].Font.Size = 12;
    sheet2.Range["1:1"].RowHeight = 30;
    sheet2.Range["A2"].Value = "資産の種類";
    sheet2.Range["B2"].Value = "金額";
    sheet2.Range["C2"].Value = "割合";
    sheet2.Range["A3"].Value = "節約";
    sheet2.Range["A3"].Interior.Color = Color.FromArgb(145, 159, 129);
    sheet2.Range["B3"].BindingPath = "Savings";
    sheet2.Range["C3"].Formula = "=B3/B9";
    sheet2.Range["A4"].Value = "持株";
    sheet2.Range["A4"].Interior.Color = Color.FromArgb(215, 145, 62);
    sheet2.Range["B4"].BindingPath = "Shares";
    sheet2.Range["C4"].Formula = "=B4/B9";
    sheet2.Range["A5"].Value = "株式";
    sheet2.Range["A5"].Interior.Color = Color.FromArgb(206, 167, 34);
    sheet2.Range["B5"].BindingPath = "Stocks";
    sheet2.Range["C5"].Formula = "=B5/B9";
    sheet2.Range["A6"].Value = "住宅";
    sheet2.Range["A6"].Interior.Color = Color.FromArgb(181, 128, 145);
    sheet2.Range["B6"].BindingPath = "House";
    sheet2.Range["C6"].Formula = "=B6/B9";
    sheet2.Range["A7"].Value = "債券";
    sheet2.Range["A7"].Interior.Color = Color.FromArgb(137, 116, 169);
    sheet2.Range["B7"].BindingPath = "Bonds";
    sheet2.Range["C7"].Formula = "=B7/B9";
    sheet2.Range["A8"].Value = "自動車";
    sheet2.Range["A8"].Interior.Color = Color.FromArgb(114, 139, 173);
    sheet2.Range["B8"].BindingPath = "Car";
    sheet2.Range["C8"].Formula = "=B8/B9";
    sheet2.Range["A9"].Value = "合計";

    sheet2.Range["B9:C9"].Merge();
    sheet2.Range["B9:C9"].HorizontalAlignment = HorizontalAlignment.Center;
    sheet2.Range["B9:C9"].NumberFormat = "¥###0_);(¥###0)";
    sheet2.Range["B9:C9"].Formula = "=SUM(B3:B8)";

    sheet2.Range["B3:B8"].NumberFormat = "¥###0_);(¥###0)";
    sheet2.Range["C3:C8"].NumberFormat = "0.00%";
    sheet2.Range["C3:C8"].FormatConditions.AddDatabar();
    workbook.Save("addrangetemplatecelltype.pdf");

    //データソースを設定します
    sheet1.Range["A:B"].ColumnWidthInPixel = 300;
    sheet1.Range["1:2"].RowHeightInPixel = 200;
    sheet1.Range["A1"].Value = record1;
    sheet1.Range["B1"].Value = record2;
    sheet1.Range["A2"].Value = record3;
    sheet1.Range["B2"].Value = record4;

    //手順3)範囲テンプレートを作成します
    var rangeTemplateCelltype = new RangeTemplateCellType(sheet2);

    //セル型を「A1:B2」に適用します  
    sheet1.Range["A1:B2"].CellType = rangeTemplateCelltype;

    //PDFファイルに保存します
    workbook.Save("addrangetemplatecelltype.pdf");

}
class CustomObjectJsonSerializer : IJsonSerializer
{
    public object Deserialize(string json)
    {
        return Newtonsoft.Json.JsonConvert.DeserializeObject(json);
    }

    public string Serialize(object value)
    {
        return Newtonsoft.Json.JsonConvert.SerializeObject(value);
    }
}
class PersonalAssets
{
    public string Name;
    public int Savings;
    public int Shares;
    public int Stocks;
    public int House;
    public int Bonds;
    public int Car;
}


使用制限

Excelではテンプレート型セルはサポートされていないので、.xlsxファイルとして保存する場合このセル型は失われます。