2011年4月9日土曜日

.xlsx ExcelファイルとOpenXML

・動機
Apache POIのプログラムでExcelファイルをつくる際, パフォーマンスを重視したコードを書くために調べました。

・はじめに
Excel 2007 以降で, 利用されている .xlsx 

これが, アーカイブであることをご存じだろうか。

・確認方法
.xlsx を .zip に変更して解凍すると, 一つのフォルダになる

test.xlsx
↓   拡張子変更
test.zip
↓   解凍
test ( フォルダ )

・構成
test
| - _rels                    
| - docProcs
| - [Content_Types]
| - xl - _rels
     |  - theme
     |  - worksheets                 :   worksheetの中, つまりシートのファイルを格納する(sheet1.xml ...)
     |  - shreadStrings.xml        :    Excelのセルに書き込んだ文字列を格納しておく
     |  - styles.xml                    :
     |  -  workbook.xml

Excel内に書き込まれている文字は, shredStrings.xml に書かれている。
このデータを参照して, 下で述べる sheet.xml にハッシュを書き込む

つまりこの構成を守れば, .xlsxのファイルをつくりExcelファイルを構築することができるというもの
Excel における シートは worksheets 内に順番に sheet1.xml,  sheet2.xml  などとする

このsheet.xml に実際に格納されているデータを xml 形式で保存するわけである
このsheetx.xml は, OpenXML 形式で書かれている。

この形式を確認したのは, Office 2007 と, Mac Office 2011 の.xlsx
ちなみに, 2003形式の.xls だと, 違うようだ

次回 Apache POI のプログラムと, その高速化について...

0 件のコメント:

コメントを投稿