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

ナビゲーションに移動 検索に移動
412行目: 412行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>
== Excelの主要関数のサポート ==
以下の例では、SUM、AVERAGE、VLOOKUP、IF等の関数を直接挿入して使用している。<br>
<br>
関数の適用には<code>FormulaA1</code>プロパティを使用して、通常のExcelで使用する形式で数式を記述する。<br>
関数の結果を取得するには、セルの<code>Value</code>プロパティを使用する。<br>
<br>
また、文字列を含む数式では、ダブルクォートをエスケープする必要がある。(例: \"高い\")<br>
<br>
<u>※注意</u><br>
<u>実際の使用では、これらの関数をより複雑な数式の一部として使用したり、大量のデータに対して適用したりすることができる。</u><br>
<u>また、Closed XMLは多くのExcel関数をサポートしているが、一部の高度な関数や最新の関数はサポートされていない可能性がある。</u><br>
<u>そのような場合は、代替の方法を検討する必要がある。</u><br>
<br>
<syntaxhighlight lang="c++">
using System;
using ClosedXML.Excel;
class Program
{
    static void Main(string[] args)
    {
      using (var workbook = new XLWorkbook())
      {
          var worksheet = workbook.Worksheets.Add("関数サンプル");
          try
          {
            // サンプルデータの入力
            worksheet.Cell("A1").Value = "商品";
            worksheet.Cell("B1").Value = "価格";
            worksheet.Cell("A2").Value = "りんご";
            worksheet.Cell("B2").Value = 100;
            worksheet.Cell("A3").Value = "バナナ";
            worksheet.Cell("B3").Value = 80;
            worksheet.Cell("A4").Value = "オレンジ";
            worksheet.Cell("B4").Value = 120;
            // SUM関数
            // A1形式の数式を設定して、B2からB4セルの値を合計する
            worksheet.Cell("B5").FormulaA1 = "=SUM(B2:B4)";
            Console.WriteLine($"合計金額: {worksheet.Cell("B5").Value}");
            // AVERAGE関数
            // B2からB4セルの値の平均を計算する
            worksheet.Cell("B6").FormulaA1 = "=AVERAGE(B2:B4)";
            Console.WriteLine($"平均価格: {worksheet.Cell("B6").Value}");
            // 検索用データの入力
            worksheet.Cell("D1").Value = "商品コード";
            worksheet.Cell("E1").Value = "商品名";
            worksheet.Cell("D2").Value = "A001";
            worksheet.Cell("E2").Value = "りんご";
            worksheet.Cell("D3").Value = "B001";
            worksheet.Cell("E3").Value = "バナナ";
            worksheet.Cell("D4").Value = "C001";
            worksheet.Cell("E4").Value = "オレンジ";
            // VLOOKUP関数
            // A7セルの値をキーとして、D2:E4の範囲から対応する値を検索する
            // 2は返す列のインデックス、FALSEは完全一致を意味する
            worksheet.Cell("A7").Value    = "B001";  // 検索キー
            worksheet.Cell("B7").FormulaA1 = "=VLOOKUP(A7,D2:E4,2,FALSE)";
            Console.WriteLine($"商品コードB001の商品名: {worksheet.Cell("B7").Value}");
            // IF関数
            // B2セルの値が100より大きい場合は"高い"、そうでない場合は"安い"を返す
            worksheet.Cell("C2").FormulaA1 = "=IF(B2>100,\"高い\",\"安い\")";
            worksheet.Cell("C3").FormulaA1 = "=IF(B3>100,\"高い\",\"安い\")";
            worksheet.Cell("C4").FormulaA1 = "=IF(B4>100,\"高い\",\"安い\")";
            Console.WriteLine($"りんごの評価: {worksheet.Cell("C2").Value}");
            Console.WriteLine($"バナナの評価: {worksheet.Cell("C3").Value}");
            Console.WriteLine($"オレンジの評価: {worksheet.Cell("C4").Value}");
            // ファイルを保存
            workbook.SaveAs("Excel関数サンプル.xlsx");
            Console.WriteLine("ファイルを保存");
          }
          catch (Exception ex)
          {
            Console.WriteLine($"エラーが発生: {ex.Message}");
          }
      }
    }
}
</syntaxhighlight>


== コレクションやDataTableの使用 ==
== コレクションやDataTableの使用 ==

案内メニュー