Excel ブック (*.xlsx) 形式概要


◆Office Open XML

Office 2007 から採用されているファイル形式「Office Open XML」は、XML をベースとしたオフィスソフトウェア用のファイルフォーマット形式です。2006 年 12 月に Ecma International により ECMA-376 として標準化され、2008 年 4 月には ISO と IEC の合同技術委員会 ISO/IEC JTC 1 の副委員会 SC 34 において、ISO/IEC 29500 として標準化されました(Wiki ペディアより)。
詳細な仕様については、Ecma International のホームページから約 5500 ページに渡る仕様書をダウンロードすることができます。


◆Excel ファイル構造

Office 2007 からは XML で記述された文書と画像やプリンタ情報などのバイナリ情報を ZIP でパッケージングして格納するようになりました。Excel の場合、拡張子を「.xlsx」から「.zip」に変更してエクスプローラで構造を確認することができます。



フォルダ内のパス情報

パス 情報
[Content_Types].xml パーツ情報
_rels/.rels リレーション情報全般
docProps/core.xml 作成者、作成日時等の情報
docProps/app.xml アプリケーション情報(バージョン、サマリ等)
xl/_rels/workbook.xml.rels ワークブック内リレーション情報
xl/workbook.xml ファイルバージョン、ウインドウ情報、シート情報一覧等
xl/theme/theme1.xml テーマ情報
xl/worksheets/sheet1.xml シート情報(Sheet1)
xl/worksheets/sheet2.xml シート情報(Sheet2)
xl/worksheets/sheet3.xml シート情報(Sheet3)
xl/styles.xml スタイル情報


Office Open XML 形式を採用することで、下記の利点が期待されます。

  • ファイルサイズの減少
  • データの汎用性向上
  • ファイル破損時のリスクの軽減

ファイルサイズについて、Excel を例にバイナリ形式と Office Open XML 形式のファイルそれぞれのファイルサイズを比較します。

  • 新規に作成した空のファイル(Book1.xlsx、Book1.xls)
  • 1000 セルにランダムな数値を設定したファイル(Num1000.xlsx、Num1000.xls)
  • 1000 セルにランダムな文字列を設定したファイル(Str1000.xlsx、Str1000.xls)

いずれの場合も Office Open XML 形式の方がサイズが小さくなっています。


文字列や画像等の情報を追加した場合、下記のパスに追加されます。

データ パス 情報
文字列 xl/sharedStrings.xml 文字列参照番号と文字列を保持します
計算式 xl/calcChain.xml 数式の参照情報が保持されます
画像 xl/media/image1.png
xl/drawings/_rels/drawing1.xml.rels
xl/drawings/drawing1.xml
描画情報も追加されます
プリンタ情報 xl/printerSettings/printerSettings1.bin バイナリの情報として追加されます。

文書自体は XML でも、その構造を正しく把握して追加したり書き戻しを行うとなると結構な処理が必要となります。そういった部分はコンポーネントを使用した方が効率が飛躍的によくなります。


◆Office Open XML 形式の Excel ファイルを扱うコンポーネント

Office Open XML 形式の Excel ファイルを扱うコンポーネントは、代表的なものとして下記のものがあります。

  • アドバンスソフトウェアの「ExcelCreator 2012」に含まれる「ExcelCreator 8.0 for .NET」
  • グレープシティさんの「PowerTools ComponentOne Studio 2012J」に含まれる「PowerTools XLS for .NET」
  • Microsoft 社が提供している「Open XML SDK」
  • Open XML SDK をラップしたフリーのライブラリ「ClosedXML」
  • System.IO.Packaging をラップした ExcelPackage
  • ExcelPackage を元に開発された EPPlus

最初の 2 つは有料のコンポーネントで xls 形式の記事でも紹介しました。他はフリーのライブラリとなります。フリーのライブラリについては、codeplex やいろいろな blog で取り上げられています。

有料のコンポーネントでは、導入コストはかかりますが、サポート、動作保証において大きなメリットがあります。基本動作についてはメーカーの方で検証を行うことがほとんどですので、動作保証されている環境では安心して使うことができます。また、使用方法についてメーカーに問い合わせを行うことができることもメリットの一つです。何年かに渡る保守が必要なシステムでは、有料のコンポーネントを使用した方が安心と言えると思います。

フリーのコンポーネントの利点としては、導入コストがかからないことが挙げられますが、開発環境、動作環境を含むすべてのメンテナンスが自己責任となります。例えば Open XML SDK は現在バージョンが 2.0 ですが、CTP 版として 2.5 が公開されていて、対象となる .NET Framework が 4 となっています。2.0 の不具合の修正は 2.5 に含まれていますが、2.0 への適用や今後のサポートについては不明となっており、動作環境には注意が必要です。わずかな機能のみの実装であったり、社内ツールなどで決まった範囲での使用の場合はフリーのコンポーネントの方が有利だと思います。


◆まとめ

Office Open XML ファイル形式のデータは、プログラム中から扱うことがより容易になり、システムに直接ファイルを組み込んで使用することでシステムの利便性が向上します。複雑なシステムであっても最終的にデータを見たり加工したり印刷するには Excel が好まれる傾向にあります。コンポーネントを有効に活用することでより使いやすいシステムを構築できると思います。

具体的にデータを扱う方法についてはいずれ紹介したいと思います。

You can leave a response, or trackback from your own site.

Leave a Reply