12,964
回編集
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) |