DioDocs for Excel
テンプレートを使用したExcelレポートの生成
テンプレート > テンプレートを使用したExcelレポートの生成

このチュートリアルでは、新しいスマートフォン・シリーズを発売する企業のマーケティングレポートを作成するユーズケースを考慮します。従って、計画されたマーケティング活動のExcelレポートを作成する必要があります。レポートには、予定されている打ち上げイベント、その予算、および費用の詳細を記載します。この場合、データテーブルをデータソースして使用しています。テンプレートレイアウトは、複数のレポートを生成するために、異なるExcelワークシートで作成されます。

以下は、テンプレートを使用してExcelレポートを生成する方法を説明します。

  1. ワークブックの異なるワークシートでテンプレートレイアウトを作成します。様々のフィールド種類を使用してマーケティングレポートのテンプレートレイアウトを定義します。
    • 静的フィールド: テンプレートレイアウト内に静的フィールドを定義します。静的フィールドとは、最終レポートで値が変更されないフィールドのことです。例えば、ヘッダーフィールドやマーケティングレポート、スマートフォンの費用、発表イベントなどのテンプレートヘッダ。
    • 連結フィールド: データソースと連結されているフィールドを中括弧{{ }}で囲みます。DataTableのデータソースの場合は、連結フィールドを{{ds.FieldName}}のように定義します。ここで、dsとは、AddDataSourceメソッドで使用されているデータソースの仮名です。
    • 式フィールド: 値が式で計算されるフィールド関数を指定します。
    • シート名: 複数のテンプレートレイアウトをマーケティングレポート、スマートフォンの費用、発表イベントなどExcelの異なるワークシートで作成します。最終のシートに対して、データ連結されたフィールド名{{ds.Country}}を指定します。このフィールド名を指定すると、データソースの国フィールドで存在する値の数に基づいて複数レポートが生成されます。 

    テンプレートレイアウト: マーケティングレポート

    本レイアウトで、Groupプロパティ「G」をMergeに設定して、スマートフォン名をグループごとに一度のみ表示します。Merge値で各グループのセルが結合されます。          

    テンプレートレイアウト: スマートフォンの費用

    本レイアウトは、ExpansionとContextという2つのテンプレートプロパティを使用します。

    • Expansionプロパティを(E=H)のように設定することで、SmartPhoneフィールドを横方向に拡張します。
    • Contextプロパティを(C=A3)のように設定すると、ExpenseフィールドがSmartPhoneフィールドのように横方向に拡張されます。

    テンプレートレイアウト: 発表イベント

    本レイアウトは、Range、Sort、Expansion、PageBreakという4つのテンプレートプロパティを使用します。

    • Rangeプロパティを(R=A3:B5)のように設定すると、このフィールドが指定した範囲内のフィールドの次候補コンテキストとなり、デフォルトや明示的なコンテキストを設定できないフィールドがこのフィールドをコンテキストしとして使用します。
    • Sortプロパティを(S=None)のように設定すると、イベントの並べ替えが行われません。
    • Expansionプロパティ(E=H)のように設定すると、Eventフィールドが横方向に拡張されます。
    • PageBreakプロパティを(PageBreak=True)のように設定すると、垂直および水平分割が追加されます。

    テンプレートレイアウト: {{ds.Country}}


  2. GcExcelにテンプレートをロードします。
    C#
    コードのコピー
    Console.WriteLine("GcExcelテンプレートを使用してマーケティングレポートの生成");
    //ワークブックを初期化します
    var workbook = new Workbook();
    //ResourceからBudgetPlan_DataTable.xlsxテンプレートをワークブックにロードします
    var templateFile = "../../../Resources/BudgetPlan_DataTable.xlsx";
    workbook.Open(templateFile);
    

  3. データソースを構成してデータ列とデータをデータテーブルに追加します。
  4. C#
    コードのコピー
    //カスタムオブジェクト・DataSet・DataTable・JSON・変数のようなデータソースの種類があります
    //DataTableを使用します
    var dataSource = new DataTable();
    
    //テンプレートフィールドに従ってDataTableにDataColumnsを追加します
    dataSource.Columns.Add(new DataColumn("SmartPhone", typeof(string)));
    dataSource.Columns.Add(new DataColumn("Event", typeof(string)));
    dataSource.Columns.Add(new DataColumn("Budget", typeof(Int32)));
    dataSource.Columns.Add(new DataColumn("Expense", typeof(Int32)));
    dataSource.Columns.Add(new DataColumn("City", typeof(string)));
    dataSource.Columns.Add(new DataColumn("Country", typeof(string)));
    
    //DataTableにデータを追加します
    dataSource.Rows.Add("Apple iPhone 11", "携帯電話の発売", 1000, 950, "シアトル", "アメリカ");
    dataSource.Rows.Add("Apple iPhone 11", "CEOとの会議", 2000, 1800, "ニューヨーク", "アメリカ");
    dataSource.Rows.Add("Samsung Galaxy S10", "CEOとの会議", 1600, 1550, "パリ", "フランス");
    dataSource.Rows.Add("Apple iPhone XR", "携帯電話の発売", 1800, 1650, " ケープタウン ", "南アフリカ");
    dataSource.Rows.Add("Samsung Galaxy S9", "携帯電話の発売", 1500, 1300, "パリ", "フランス");
    dataSource.Rows.Add("Apple iPhone XR", "CEOとの会議", 1600, 1500, " ニュージャージー ", "アメリカ");
    dataSource.Rows.Add("Samsung Galaxy S9", "CEOとの会議", 1200, 1150, "シアトル", "アメリカ");
    dataSource.Rows.Add("Samsung Galaxy S10", "携帯電話の発売", 1100, 1070, " ダーバン ", "南アフリカ");
    

  5. AddDataSourceメソッドを使用してデータソースをGcExcelに追加します。
    C#
    コードのコピー
    //DataSourceを追加します
    //「ds」は、{{ds.SmartPhone}}などのフィールドを定義するためにテンプレートで使用されるdataSourceの名前です
    workbook.AddDataSource("ds", dataSource);
    

  6. ProcessTemplateメソッドを使用してテンプレートを実行します。
    C#
    コードのコピー
    //テンプレートを処理する呼び出します
    workbook.ProcessTemplate();
    

  7. レポートを保存します。
    C#
    コードのコピー
    //ワークブックをExcelとして保存します
    workbook.Save("MarketingReport_DataTable.xlsx");
    

    上記のテンプレートで生成される各レポートの例を以下の画像で表示します。

    Excelレポート: マーケティングレポート

    Excelレポート: スマートフォンの費用

    Excelレポート: 発表イベント

    Excelレポート: (複数レポートが生成されます。)

上記の処理により、Excel レポートの生成中にテンプレートが上書きされます。 テンプレートを保持しながらレポートを作成するには、以下の「テンプレートを保持しながらレポートを作成する」セクションを参照してください。

テンプレートを保持しながらレポートの作成

GcExcel には、テンプレートを保持しながら新しいワークブックレポートのインスタンスを返す IWorkbook インターフェイスの GenerateReport メソッドがあります。このメソッドは、特定のワークシートのみのレポートを生成できるように、オーバーロードも提供します。

GenerateReport メソッドを使用してレポートを生成する方法については、次のサンプル コードを参照してください。

C#
コードのコピー
//テンプレートを処理し、レポートワークブックのインスタンスを返します
IWorkbook report = workbook.GenerateReport();  
                        
// 特定のワークシートのテンプレートのみを処理します
// IWorkbook report = workbook.GenerateReport(workbook.Worksheets["Sales"]); 

レポートを生成する方法については、GcExcel のサンプルブラウザを参照してください。