【C#】Excelから特定のデータを抽出する方法。
おはようございます。おーみんです。
先日ダイエット管理アプリを制作しました。
C#でダイエット管理アプリを制作してみました。 - おーみんだよ。
この管理アプリはExcelに記録した日々の体重を抽出し、減らした体重や現在の自分の体型に似た芸能人を表示しています。
今回の記事では、どうすればExcelからデータを抽出できるのか?
「ClosedXML」ライブラリを用いて解説していきましょう。
※ClosedXMLとは、Excelファイル(.xlsx)を読み込んだりデータを抽出したりするための機能(ライブラリ)のことです。
Excelから特定のデータを抽出する方法
それでは今回の環境から抽出する方法までの解説を以下に示します。
環境
- Windows 10
- Visual Studio 2019
- .NET Framework 4.7.2
- Excel 2013
ClosedXML インストール手順
まずはVisual Studioを開き、画面右の「ソリューション エクスプローラー」欄にあるファイル名を右クリックします(僕の場合は"WeightManagerApp")。
右クリックすると以下のように色々出てくるので、その中から「NuGetパッケージの管理」を選択します。
画面左上の「参照」ボタンを押し、検索欄にて「closedxml」と打つと一番上に「ClosedXML」が出てきますのでインストールしてください。
Excelから特定のデータを抽出する
それでは「ClosedXML」ライブラリもインストールしたことですし、早速プログラムを書いていきましょう!
今回はせっかくですので僕の作ったダイエット管理アプリのソースコードを例に使っていきます。
まずはプログラムの最初の部分に「using ClosedXML.Excel;」と書いてください。
続いてExcelからのデータ抽出部分です。
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にて公開しています。
似たようなものを作る方の参考になれば幸いです!(^^)!