Edited at

(∩´ω`∩)EPPlusを使って、便利にExcel操作(∩´ω`∩)

More than 3 years have passed since last update.

(∩´ω`∩)< C#でエクセル操作が出来るライブラリを紹介します。

機能も優れていて、使いやすいのでオススメです。

使い方を忘れないように、忘備録として書きます。

字ばっかりでごめんなさいですが、初めて使う人が分かるように書きます。

まずは部分的な説明をして、最後にソースをまとめたものを記述します。

説明云々より使い方を知りたい場合は、下まで飛んでください。

(∩´ω`∩)< それでははじめ。


今回はデータの入ったエクセルファイルから、書き込み用のエクセルファイルを新たに作成してデータの移行を行う手順です。


データの読み込み


  • エクセルファイルを読み込む

まずは、データの入ったエクセルファイルの操作です。


// ファイル情報を読み込む
var inputExcelFile = new FileInfo("input_file.xlsx");

※ちなみに「.xls」ファイルはEPPlusで扱えないので注意です!!!

FileInfoを使うためには名前空間System.IOを定義しておく必要があります。

ソースファイル上部に以下を記載します。

using System.IO;

GetFile()の引数には、読み込むエクセルファイルのパスを入れて下さい。


  • シートを読み込む

次に、読み込みたいシートを指定します。

using (var inputFile = new ExcelPackage(inputExcelFile))

{
// シート名が「inputSheet」
var sheet = inputFile.Workbook.Worksheets["inputSheet"];

// 以下に、シート内のセルの読み込み処理を記述する
}

ExcelPackageを使うためには名前空間OfficeOpenXmlを定義しておく必要があります。

ソースファイル上部に以下を記載します。

using OfficeOpenXml;

名前空間の指定が多くなってきたら、ソースの記載のない所で

「右クリック」⇒「usingの整理」⇒「未使用のusingの削除」

を行うと、使っていない名前空間を自動で削除してくれます。

また、「右クリック」⇒「usingの整理」⇒「usingの並び替え」

を行うことで名前空間の並び替えも自動で行ってくれます。

(∩´ω`∩)< それでもエラーが出る場合は、プロジェクト内の「参照設定」に

使いたい名前空間が追加されているか確認しましょう!


  • セルの値を読み込む

※次の内容は、usingブロック内で行います。

欲しいセルの値を読み込みます。

セルの指定方法は2種類あります。

1.セルの行と列の位置で指定する

var cellA1 = .Cells[1, 1].Value; // A1の値を取得

var cellA2 = .Cells[2, 1].Value; // A2の値を取得
var cellB1 = .Cells[1, 2].Value; // B1の値を取得

2.セル名で指定する

var cellA1 = .Cells["A1"].Value; // A1の値を取得

var cellA2 = .Cells["A2"].Value; // A2の値を取得
var cellB1 = .Cells["B1"].Value; // B1の値を取得

(∩´ω`∩)< どちらの方法でもセルの指定を行えます。

お好みでどうぞ。

これで、値を取得するエクセルファイルから、

値の取得は出来たので、次は書き込みに移ります。


データの書き込み


  • 書き込み用のエクセルファイルを作成する

まずはFileInfoクラスを使って、書き込み用のエクセルファイルを作成しましょう。

var outputExcelFile = new FileInfo("outputFile.xlsx");

FileInfo()の引数には作成したい場所のパスと、ファイル名を指定します。


  • 作成したエクセルファイルにシートを追加する

今はまだ、シートのないエクセルファイルを作っただけなので、シートを追加します。

using (var outputFile = new ExcelPackage(outputExcelFile))

{
// エクセルファイルに「outputSheet」を追加する
var sheet = outputFile.Workbook.Worksheets.Add("outputSheet");
}

これで、「outputSheet」が作成されました。

いよいよ、シート内に読み取ったデータを書き込んでいきます。


  • 作成したシートに値を書き込む

※次の内容は、usingブロック内で行います。

シートの用意も出来たので、読み取っておいた値を書き込んでいきます。

読み取り時と同じように、書き込みたいセルを指定してください。

sheet.Cells[1, 1].Value = cellA1; // セルA1に書き込み

sheet.Cells["A2"].Value = cellA2; // セルA2に書き込み
sheet.Cells["B1"].Value = cellB1; // セルB1に書き込み


  • エクセルファイルを保存する

※次の内容は、usingブロック内で行います。

最後に忘れちゃいけないのが保存です。

保存をしないでしまうと、作成したエクセルデータは真っ白になってしまいます。

忘れずに保存しましょう。

outputFile.Save();

(∩´ω`∩)< これで、読み取りから書き込みまで終了です!!!

お疲れ様でした~。


さいごに

使い方を覚えてしまえば、とても楽にエクセルファイルが扱えます!

更に、EPPlusを使って、セルの色付けなどの

ある程度の整形も行えます。

その方法は、次にでも書こうと思います。

エクセル操作の機会があればぜひ使ってみてください。

(∩´ω`∩)< 最後にまとめたソースを貼ってお別れです。

さようなら~

// ファイル情報を読み込む

var inputExcelFile = new FileInfo("input_file.xlsx");

// 読み取った値を入れておく変数を用意する
object cellA1 = null;
object cellA2 = null;
object cellB1 = null;

using (var inputFile = new ExcelPackage(inputExcelFile))
{
// シート名が「inputSheet」
var inputSheet = inputFile.Workbook.Worksheets["inputSheet"];

cellA1 = inputSheet.Cells["A1"].Value; // A1の値を取得
cellA2 = inputSheet.Cells["A2"].Value; // A2の値を取得
cellB1 = inputSheet.Cells["B1"].Value; // B1の値を取得
}

// 書き読み用エクセルファイルを作成する
var outputExcelFile = new FileInfo("outputFile.xlsx");

using (var outputFile = new ExcelPackage(outputExcelFile))
{
// エクセルファイルに「outputSheet」を追加する
var outputSheet = outputFile.Workbook.Worksheets.Add("outputSheet");

outputSheet.Cells[1, 1].Value = cellA1; // セルA1に書き込み
outputSheet.Cells["A2"].Value = cellA2; // セルA2に書き込み
outputSheet.Cells["B1"].Value = cellB1; // セルB1に書き込み

// ファイルの保存を、忘れずに
outputFile.Save()
}


(`・ω・´)超えていけ、過去も私も