.NET 用 Execl 出力ライブラリのまとめ(2021年版)
.NET 対応 Excel 出力用ライブラリ
.NET から Excel ファイルや PDF ファイルを出力する要件があった場合、どのライブラリを使えば良いのか悩むところです。
Microsoft.Office.Interop.Excel
もはや太古の遺産である COM を使った方法。
COM(アンマネージド)なので、実装がクソ(解放し忘れ)だと、メモリリークが発生します。
そもそも Excel がインストールされていないと使えません。
この方法は、今さら使うことはないでしょう。
ClosedXML
いきなり余談ですが、.xlsx ファイルの最期の「x」は、XML です。xlsx の中身はオープン規格の XML なのです。
で、Excel 2007 以降の .xlsx ファイルを生成するために、オープンソースライブラリを使いたい場合は、こちらになると思います。(ライセンスは MIT)
.NET Standard 対応。
https://github.com/closedxml/closedxml
npoi
Java ライブラリの .NET 移植版。
古い .xls ファイルも要件に入っている場合は、こちらになります。(ライセンスは Apache 2.0)
長年の実績があるため、枯れたライブラリと言えるでしょう。
.NET Standard 対応。
https://github.com/nissl-lab/npoi
DioDocs
GrapeCity のライブラリ。API ライブラリで、高速に動作するとのこと。
.NET 5 にも対応し、クロスプラットフォーム対応。
有償ですが、商用利用でサポートが必要な場合は選択肢に入るでしょう。
https://www.grapecity.co.jp/developer/diodocs
ちなみに、複雑な帳票ではなく、一覧データを出力するだけであれば、同じくグレープシティから出ている Wijmo に収録されている FlexGrid にも Excel 出力機能があります。
こちらは Web だけに対応します。
https://www.grapecity.co.jp/developer/wijmo/flexgrid
ExcelCreater
Advance Software から出ている、Excel のインストールなしに Excel ファイルが出力可能な有償ライブラリ。昔からある定番です。
ただし、ASP.NET Web フォームまでの対応です。(サーバー側で Excel を作るだけなら問題ないですが、サポート対象外です)ASP.NET MVC で使いたい場合、同社の「VB-Report」が対応しています。
難点としては、.NET Framework までしか対応していません。
枯れたライブラリと言えるでしょう。
どれを選ぶか?
たいていの場合、Excel 出力は、業務アプリで帳票を出したいというニーズがあるということでしょう。であれば、なんらかのサポートがあるライブラリが選定条件になると思います。
……そうすると、GrapeCity か、Advance Software くらいしかありませんね。
顧客に説明できるなら、ClosedXML もありかな、と思います
趣味だったら、どれでも好きなものを。
Microsoft.Office.Interop.Excel 以外で。