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 プロパティで、タブの色を黄色に設定しています。