「ClosedXML - Excelファイルの操作」の版間の差分

ナビゲーションに移動 検索に移動
616行目: 616行目:
   
   
           Console.WriteLine("条件付き書式の適用が完了");
           Console.WriteLine("条件付き書式の適用が完了");
      }
      catch (Exception ex)
      {
          Console.WriteLine($"エラーが発生: {ex.Message}");
      }
    }
}
</syntaxhighlight>
<br><br>
== テンプレートベースの文書生成 ==
テンプレートベースの文書の生成は、レポートや請求書等、構造化された文書の生成に適している。<br>
<br>
<u>※注意</u><br>
<u>ただし、テンプレートファイルの構造が変更された場合、コードの修正が必要になる可能性があることに注意すること。</u><br>
<br>
以下の例では、既存のテンプレートファイルを基に新しい文書を生成している。<br>
<br>
* 既存のテンプレートファイルを開いて、新しいワークブックにコピーする。
* <code>ReplaceText</code>メソッドを使用して、プレースホルダーを実際の値で置換する。
* 動的なデータを挿入して、必要な計算を行う。
<br>
<syntaxhighlight lang="c#">
using System;
using System.Collections.Generic;
using ClosedXML.Excel;
class Program
{
    static void Main(string[] args)
    {
      Console.WriteLine("テンプレートベースの文書生成を開始...");
      try
      {
          // テンプレートファイルを開く
          using (var template = new XLWorkbook("テンプレート.xlsx"))
          using (var result = new XLWorkbook())
          {
            var worksheetTemplate = template.Worksheet(1);
            var worksheetResult = result.Worksheets.Add("生成結果");
            // テンプレートをコピー
            worksheetTemplate.CopyTo(worksheetResult);
            // プレースホルダーを置換
            worksheetResult.Cells().ReplaceText("{{日付}}", DateTime.Now.ToString("yyyy/MM/dd"));
            worksheetResult.Cells().ReplaceText("{{会社名}}", "株式会社サンプル");
            // 動的データを挿入
            var data = new List<object[]>
            {
                new object[] { "商品A", 100, 5000 },
                new object[] { "商品B", 200, 3000 },
                new object[] { "商品C", 150, 4000 }
            };
            var dataRange = worksheetResult.Cell("A5").InsertData(data);
            // 合計を計算
            var lastRow = dataRange.LastRow().RowNumber();
            worksheetResult.Cell(lastRow + 1, 1).Value = "合計";
            worksheetResult.Cell(lastRow + 1, 3).FormulaA1 = $"=SUM(C5:C{lastRow})";
            result.SaveAs("生成結果.xlsx");
          }
          Console.WriteLine("テンプレートベースの文書生成が完了");
       }
       }
       catch (Exception ex)
       catch (Exception ex)

案内メニュー