.net column

.NET開発者のためのブログメディア
Excel

C#でExcelをオートメーション化する手法とは

2019年10月29日

C#ではアプリケーションの開発に用いられますが、Excelを制御することもできます。この記事ではExcelのオートメーション化について紹介します。

SE
そもそもオートメーション化って、どういった意味なのでしょうか?
PM
例えば、Excelのような全く別のアプリケーションを、自分が開発しているプログラムで制御できるようにすることだよ。

C#でExcelをオートメーション化する方法

Excelを利用しているユーザーは数多くいます。そして、C#で開発しているプログラムから利用頻度の高いExcelを出力することは、現場で求められるコーディングスキルのひとつです。

アプリケーションを起動して、新しいブックの作成やセルにデータを設定するなどがExcelのオートメーション化といった作業になります。
このオートメーション化には、二通りのパターンが存在しています。

Microsoft.Office.Interop.Excelを利用してのCOM参照する方法(非推奨)

COM参照では、C#で開発したアプリケーションが起動されている裏で、Excelを実際に立ち上げるためにEXCEL.EXEも同時に起動します。
そのため、処理が遅くなることが多くあります。

また、COM参照の場合は自動で不要なメモリを解放する機能「ガベージコレクション」が機能しません。

開発者自身がSystem.Runtime.InteropServices.Marshal.ReleaseComObject()メソッドを呼び出し、参照したCOMオブジェクトを解放する必要があります。開発者自身に委ねられるということは、それだけ解放漏れも発生する可能性が高いので、ここでは非推奨とさせていただきます。

オープンソースライブラリである「NPOI」を利用する方法(推奨)

歴史あるApache POIの.NETバージョンであり、実績があります。また、拡張子.xlsと.xlsxの両方に対応しています。

C#でNPOIを利用してオートメーション化

拡張子.xlsファイルはHSSFWorkbookクラスを、xlsxファイルはXSSFWorkbookクラスを利用します。
このクラスをインスタンス化することで、ブックの作成やセルの編集作業が可能になります。

まずはNPOIをお使いのVisual Stuidoにインストールしましょう。今回使用するVisual StudioのバージョンはCommunity 2017です。

  1. Visual Studioのプロジェクトを作成した後、赤枠の箇所を右クリックし、「ソリューションのNuGetパッケージの管理」を選択します
  2. NuGet選択

  3. 参照を選択して、NPOIと打ち込みます
  4. NPOI検索

  5. NPOIを選択して、右に出力されますチェックボックスをONにし、インストールボタンをクリックします
  6. NPOIインストール

  7. インストールが完了すれば、参照にNPOIが含まれていることを確認しましょう
  8. NPOI確認

以下、NPOIを利用したサンプルソースです。実行するとブックを作成します。

SE
Excelのオートメーション化には二通りの方法があるのですね。どちらでも対応できるように今から勉強します。
PM
そうだね。現場によって使用するオートメーション化も変わってくるから、より多くの方法を覚えておきましょうね。

現場では最適なExcelのオートメーション化を

上記でご紹介したオートメーション化の方法以外にもClosedXMLといったオープンソースライブラリを使用してExcelのオートメーション化は可能です。
しかし、こちらは拡張子xlsには対応していないライブラリになります。
xlsxのみの対応で良いのであれば、こちらを利用する選択肢も有効です。
それぞれの現場に最適なExcelオートメーションのコーディングを導入しましょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)