2011年11月1日火曜日

OpenXMLを使用して、サーバーサイドでExcelファイルを生成(1)

イントラ環境において、サーバーサイドでExcelファイルを生成したいというニーズは結構あります。
DataGridViewで対応していたのですが、Excel2007で開きますと、開くことは出来るのですが、以下のメッセージが表示が出てしまいどうも気持ち悪いです。

ExcelError

また、OpenOfficeでは開くことも出来ないです。

そこで注目したは『OpenXML』です。以前、VSUGのセミナーにてMSエバンジェリスト小高氏がセッションで紹介していたのを記憶していました。
「System.IO.Packing API」や「Open XML Format SDK」を使う手法を紹介していましたが、それ以外に「ExcelPackage」というのがCodePlexにあります。
その派生版?の「EPPlus」のというライブラリもありまして、こちらの方が使い勝手が良いのでご紹介致します。

EPPlus-Create advanced Excel 2007 spreadsheets on the server

Excel2003等の過去のバージョンでも互換機能パックを入れる事により、開くことが出来ます。
http://www.microsoft.com/downloads/details.aspx?FamilyID=941b3470-3ae9-4aee-8f43-c6bb74cd1466&displayLang=ja

サンプルソースがC#なので、VB.NETのコードを順次アップしています。