【Office Open XML】stylesパーツ

stylesパーツ

以下で、主要な要素について簡単な説明をしたが、いまいち分かりづらかったので、再度

 

ttkcd.hatenablog.com

 

styles.xml

SpreadSheetのワークシートのセルは、塗りつぶしをして色を設定したり、フォントを変えたりすることが出来る。
この情報をすべてのセル要素に記載するとファイルサイズが膨大になってしまうため、 stylesパーツを使用してワークブックのセルに適用されているスタイルの情報をまとめる

styleSheet(Style Sheet)要素

stylesパーツのルート要素
この子要素に、塗りつぶしやフォント情報が定義される。
子要素は11種類あるが、以下の4つに分類できる。
  • 将来の拡張用の要素
  • セル内部のスタイル情報
  • セル自身の情報
  • セル自身の情報2
上記の、将来の拡張用の要素は、extLst要素のみで、ここでは説明しない。

セル内部のスタイル情報

numFmts, fonts, fills, borders, tableStyles, colorsは大まかにここに分類できるように思える。
ワークブック全体で使用されているフォント情報等が、該当する各要素の子要素として定義されている。
少しわかりづらいのが、colors要素で、これはレガシーやカスタムされた色情報が子要素に定義される。
セル全体として、どれを使用するかは、セル自身の情報,セル自身の情報2の属性で、これらを指定する。
このとき、tableStyles, colorsは直接指定されず、例えばカスタムされた色が塗りつぶしに使用されていれば、これがfillsの子要素に定義される。
セル自身の情報,セル自身の情報2の属性は、numFmts要素以外は、子要素の0ベースのindexが対応する属性の値として指定される。
numFmt要素のみ、numFmtIdを持ち、対応する属性の値として指定される。

セル自身の情報

上記のスタイルのどれを使うかを指定している要素で、cellStyleXfs, cellXfs, cellStylesがここに分類できるように思える。
この3つの要素のうち最も基本となるのが、cellStyleXfs要素で、ワークブックで使用されている名前付きセルスタイルを定義している要素
次に、cellStyles要素が似たような要素で、cellStyleXfs要素からの少しの差を示す。実際にxfId属性で、cellStyleXfs要素の子要素の0ベースのインデックスを指定する
最後に、cellXfs要素で、シートのセル要素が参照する要素はこの要素の子要素で、参照方法は、0ベースのインデックス

セル自身の情報2

dxfs要素で、使用するセル内部のスタイル情報のみが定義されている。
条件付き書式設定で使用される要素で、ワークシートのcfRuleのdxfId属性が子要素の0ベースのインデックスで参照する