おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

【C#】Excelから特定のデータを抽出する方法。

f:id:bookreadkun:20190531083854p:plain

おはようございます。おーみんです。

 

先日ダイエット管理アプリを制作しました。

C#でダイエット管理アプリを制作してみました。 - おーみんだよ。

 

この管理アプリはExcelに記録した日々の体重を抽出し、減らした体重や現在の自分の体型に似た芸能人を表示しています。

 

今回の記事では、どうすればExcelからデータを抽出できるのか?

「ClosedXML」ライブラリを用いて解説していきましょう。

※ClosedXMLとは、Excelファイル(.xlsx)を読み込んだりデータを抽出したりするための機能(ライブラリ)のことです。

 

Excelから特定のデータを抽出する方法

それでは今回の環境から抽出する方法までの解説を以下に示します。

 

環境

 

ClosedXML インストール手順

まずはVisual Studioを開き、画面右の「ソリューション エクスプローラー」欄にあるファイル名を右クリックします(僕の場合は"WeightManagerApp")。

 

f:id:bookreadkun:20190531110034p:plain

 

右クリックすると以下のように色々出てくるので、その中から「NuGetパッケージの管理」を選択します。

f:id:bookreadkun:20190531110045p:plain

 

画面左上の「参照」ボタンを押し、検索欄にて「closedxml」と打つと一番上に「ClosedXML」が出てきますのでインストールしてください。

f:id:bookreadkun:20190531110058p:plain

 

Excelから特定のデータを抽出する

それでは「ClosedXML」ライブラリもインストールしたことですし、早速プログラムを書いていきましょう!

 

今回はせっかくですので僕の作ったダイエット管理アプリのソースコードを例に使っていきます。

 

まずはプログラムの最初の部分に「using ClosedXML.Excel;」と書いてください。

f:id:bookreadkun:20190531113333p:plain

 

 

続いてExcelからのデータ抽出部分です。

f:id:bookreadkun:20190531113547p:plain

 

40行目のusing~部分でExcelファイルを読み込んでいます。

このusing~部分はデータを読み込んでいる際に、他からのアクセスをブロックする機能でもありますので忘れないようにしましょう。

 

41行目では抽出したいExcelファイルのパスを書いています。

44行目にてExcelファイルの"Sheet1"の読み込みを行っています(複数Sheetを使っている方は特に書かなくてもいいでしょう(;´∀`))。

 

45行目で取り出したい列を選定しています(これブログ書いているときに気づいたんですが...Columns("B") になってしまっていますね...。Columnsは複数列を取り出す際に使うものなので、一つの列のみを取り出す際はColumn("B")でも良いかと思いますw)

 

そして47行目~53行目でデータを抽出しています。

foreach文の中身はご自身の好きなように(取り出したいように)書いてください。

 

※"bool isCount" とか書いていますが、これは後に書いているOutputWeightTextメソッドにて、取り出す列で空白を見つけたらisCountをtrueにしたかっただけなので気にしないでくださいw

 

最後に

今回初めてExcelからデータを抽出してみたのですが、この「ClosedXML」ライブラリは便利ですね~。

 

調べてみると他にも色々なExcel用のライブラリがあるようなので機会があれば使ってみたいなと思います。

 

ではでは!

 

※P.S

今回写真で貼ったソースコードGithubにて公開しています。

似たようなものを作る方の参考になれば幸いです!(^^)!

github.com