NPOIでExcelのBookを作成してみる
クローバーフィールドの杉山です。
ExcelのBookを生成するシリーズ第三弾です。
今回は、NPOを使用してみたいと思います。
元々、Apache POIと言うJava用のライブラリがあるのですが、これを.NET向けに作成したものがnpoiになります。
npoiの「n」は、.NETの「N」かな。知らんけど。
npoiは、poiの機能以上を実装しないためか、ゆっくりと更新が進んでいるようです。
ドキュメントは、Apache POIベースで作成しているためか、前述のOpenXMLやClosedXMLに比べて貧弱です。
まずは開発環境にnpoiのライブラリを取得します。
Visual Studioで新しいプロジェクトを作成し、パッケージマネージャコンソールを起動し、下記のコマンドを実行します。
PM> Install-Package NPOI -Version 2.4.1
令和元年5月16日現在の最新バージョン2.4.1がインストールされました。
これでコードを書く準備ができました。
NPOIはwikiなどの資料があまりないので、本家のApache POIのドキュメントも含め参考にしています。
今回添付のコードでは、”xlsx”形式のBookを出力していますが、NPOI.HSSF.UserModelを使用することで、”xls”形式のBookも取り扱うことができます。
OpenXML, ClosedXMLと異なり行やセルの位置の指定は数値(0始まり)で設定可能です。
一覧表形式でファイルを出力する場合など非常に便利だと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using NPOI.HSSF.UserModel; using System.IO; namespace ExcelNpoi { class Program { static void Main(string[] args) { String filepath = @"c:\output\npoi.xlsx"; IWorkbook workbook = new XSSFWorkbook(); ISheet sheet = workbook.CreateSheet("mySheet"); IRow row = sheet.CreateRow(0); ICell cell = row.CreateCell(0); cell.SetCellType(CellType.String); cell.SetCellValue("Hello, Excel!"); using (FileStream fs = File.Create(filepath)) { workbook.Write(fs); } } } } |