そろそろExcelの話しをしようか
クローバーフィールドの杉山です。
長らくほったらかしになっていた「神Excelをなんとかしたい」シリーズに本気で取り組みたいと思います。
できればサーバサイドでExcelを使用せずに、ExcelのBook形式のファイルを生成したいところです。
で、要件を書き出してみました。
・サーバサイドでの実行も視野に入れて、Excelは利用しない
・Windowsサーバ/クライアントのどちらでも実行可能
・おじさんはC#くらいしか使えない
・オープンソースで提供して、多少は世間に貢献したい
・欲を言えばxlsx形式(Excel2007以降)だけではなくて、xls形式もなんとかしてあげたい
・遅いより早いほうがいい
・安定して稼働するほうが後の手間がはぶけて良い
以上です。
さて、.Netで利用できるライブラリが色々あるようなのでザックリ確認してみます。
いきなりの大本命です。
(1)Open XML SDK
・Microsoft社が提供している
・Office 2007以降のOpenXML形式に対応
・.Net Frameworkで動作する
・MITライセンスで提供されている
名前が対抗馬っぽい
(2)ClosedXML
・Excel 2007+ (.xlsx, .xlsm)
・.Net Frameworkで動作する
・MITライセンスで提供されている
私は、このプロジェクトの元ネタのApache POIは利用した経験があります。
(3)npoi
・Office 2007以前のxls形式に対応
・Office 2007以降のOpenXML形式に対応
・.Net Frameworkで動作する
・Apache License 2.0ライセンスで提供されている
こちらは使ったことがない未知の領域です。
(4)EPPLus
・Office 2007以降のOpenXML形式に対応
・.Net Frameworkで動作する
・LGPLライセンスで提供されている
うむむ、それぞれのGithubの概要を読んだだけでは全然優劣付けられへん。
こないなったら、それぞれコード書いてみるしかないかな。
と、言う訳でしばらく、それぞれのライブラリを使用して書きやすさやパフォーマンスなどの比較をしていきたいと思います。
一応、下記の機能を実装してみたいと思います。
・Book、sheetを生成する
・Sheetについては、複数Sheetを作成する
・Sheet、Bookに名前を付ける
・CSVファイルを読み込んで、データをCellに貼り付ける
・Cellの書式の設定する
・Bookを保存する
気長にお待ちください。