ClosedXML でセルに計算式を設定する方法

ClosedXML では Excel のセルに計算式を設定することも可能です。

次の例ではセル A1、セル B1 には、それぞれ数字の 3 と 5 が設定されており、セル C1 にはそれらの掛け算の結果が設定されています。

このように計算式を設定するためには FormulaA1 プロパティを設定します。

using ClosedXML.Excel;

namespace ClosedXMLTest2
{
    class Program
    {
        static void Main(string[] args)
        {
            var workbook = new XLWorkbook();
            var worksheet = workbook.Worksheets.Add("Tab A");
            worksheet.Cell("A1").Value = 5;
            worksheet.Cell("B1").Value = 3;
            worksheet.Cell("C1").FormulaA1 = "A1*B1";
            worksheet.Cell("C1").SetDataType(XLCellValues.Number);
            worksheet.Cell("C1").Style.NumberFormat.SetFormat("#,##0.00");
            worksheet.TabColor = XLColor.Yellow;
           
            // Save
            workbook.SaveAs(@"C:\Temp\test2.xlsx");
            
        }
    }
}

上記の例では FormulaA1 プロパティにて、A1 セルの内容と B1 セルの内容を掛け合わせた結果を設定するために "A1*B1" と記載しています。 エクセルでは式を設定する時はセルの値を = で始めますが、FormulaA1 プロパティでも "=A1*B1" のように = をつけても OK です。

その他、少し脱線になりますが、上のコードには計算式を設定する以外にも、 いくつか知っていると便利なことがありますので、触れておきます。

まず、SetDataType でセル C1 のデータ型をセットしています。

通常、データ型はセットされた値を元に自動的に判定されます。しかし、例えば 12345 とかの数字の情報でも、もしそれが住所の番地の場合などは、 文字として扱いたい場合もあります。こうしたときは、SetDataType メソッドで XLCellValues.Text を指定して明示的に型を指定できます。

NumberFormat.SetFormat メソッドでは数字のフォーマットを指定しています。 #,##0.00 は 3 桁区切りにカンマをつけて、小数点以下二桁 0 埋めしています。

また、ワークシートオブジェクト (Worksheet) の TabColor プロパティで、タブの色を黄色に設定しています。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 C# 入門