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