LoginSignup
37
40

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-08-31

(∩´ω`∩)< 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()
}

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

37
40
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
40