【C#エクセル操作】ClosedXML – 単一、複数セルに値を書き込み

当ページのリンクには広告が含まれています。

スポンサーリンク

ClosedXMLを用いて 単一、複数セルに値を書き込む 方法を解説します

クリックしてジャンプ

準備(usingの記述)

ClosedXMLを使うために書かなければいけない おまじない があります。

using ClosedXML.Excel; // ClosedXMLを使うためのおまじない
using ClosedXML.Excel.Drawings; // ClosedXMLを使うためのおまじない

おまじない を書く場所は プログラムの頭です。

※ NuGet による ClosedXMLライブラリ が追加してあることが前提です。

ライブラリの追加については こちら の記事を参考にしてください。

ClosedXMLライブラリ を追加してない状態で おまじないを書いたらエラーになります。

セルに値を書込み

C5セル値「あいうえお」の書き込み(R1C1形式でセル指定)

// 値の書き込み(R1C1形式でセル指定)
wb.Worksheet("sheet1").Cell(5,3).Value = "あいうえお";

C5セル値「あいうえお」の書き込み(A1形式でセル指定)

// 値の書き込み(A1形式でセル指定)
wb.Worksheet("sheet1").Cell("C5").Value = "あいうえお"; 

セルに数式を書込み

C5セル数式「=1+1」の書き込み(R1C1形式でセル指定)

// 値の書き込み(R1C1形式でセル指定)
wb.Worksheet("sheet1").Cell(5,3).FormulaA1 = "=1+1";

C5セル数式「=1+1」の書き込み(A1形式でセル指定)

// 値の書き込み(A1形式でセル指定)
wb.Worksheet("sheet1").Cell("C5").FormulaA1 = "=1+1";

ClosedXML 数式関連プロパティ一覧表

スクロールできます
プロパティ名説明使用例
FormulaA1A1形式でセルに数式を設定するときに使用します。wb.Worksheet("sheet1").Cell("C5").FormulaA1 = "SUM(A1:A10)";
FormulaR1C1R1C1形式でセルに数式を設定するときに使用します。wb.Worksheet("sheet1").Cell("C5").FormulaR1C1 = "SUM(R1C1:R10C1)";
Formulaセルに数式を設定するときに使用しますが、A1形式が一般的です。wb.Worksheet("sheet1").Cell("C5").Formula = "=SUM(A1:A10)";
SetFormulaA1メソッドチェーン中でA1形式の数式をセルに設定するために使用します。wb.Worksheet("sheet1").Cell("C5").SetFormulaA1("SUM(A1:A10)");
SetFormulaR1C1メソッドチェーン中でR1C1形式の数式をセルに設定するために使用します。wb.Worksheet("sheet1").Cell("C5").SetFormulaR1C1("SUM(R1C1:R10C1)");

数式をセルに設定する際には、FormulaA1FormulaR1C1 プロパティを使用します

FormulaA1はExcelで一般的に使用されるA1参照スタイル(列はアルファベット、行は数字で表される)で数式を設定します

FormulaR1C1はR1C1参照スタイル(列と行が両方とも数字で表される)で数式を設定します

SetFormulaA1SetFormulaR1C1はメソッドチェーニングに適している点が特徴で、複数のスタイル設定を一行で行いたい場合に便利ですこれらのメソッドを使用すると、プロパティを設定する代わりにメソッドとして数式をセルに適用することができます。

例えば、以下のコードはcellの数式をメソッドチェーンで設定しています。

wb.Worksheet("sheet1").SetFormulaA1("SUM(A1:A10)").Style.Font.Bold = true;

このコードはセルに数式を設定し、そのセルのフォントを太字に設定しています

メソッドチェーニング

オブジェクトのメソッドを連続して呼び出すプログラミングのパターン。この技法は「流れるようなインターフェース」(fluent interface) とも呼ばれ、コードの可読性を向上させることができる。

メソッドチェーニングを実現するには、各メソッドが最後にそのオブジェクト自身 (this) を返すように実装されている必要があります。このために、メソッドはそのオブジェクトの型を返す必要があります。

複数セルに書込み

E1~E100セル値「2」をセット

//E1~E100セルにまとめて値をセット
wb.Worksheet("sheet1").Range(1, 5, 100, 5).Value = 2;

E1~E100セル数式「=1+1」をセット

値を文字列として読み出し

C5セル文字列として取得(R1C1形式でセル指定)

// 文字列として取得(R1C1形式でセル指定)
var C5_Value = wb.Worksheet("sheet1").Cell(5, 3).Value.ToString();

C5セル文字列として取得(A1形式でセル指定)

// 文字列として取得(A1形式でセル指定)
var C5_Value = wb.Worksheet("sheet1").Cell("C5").Value.ToString();

スポンサーリンク

クリックしてジャンプ