公開日: 2009年10月26日(Mon)
前回の記事で、Calc のファイル形式 *.ods
を分解するとXMLになると書いた。今日はこのXMLの形式について、構造を少し分析してみた。(ググってもなかなかいい文献が見つからなくて・・・)
今日は印刷範囲の設定方法について調べてみた。印刷範囲は、表を印刷したときのページ割りの設定。(ページ設定、というのかな?)
設定は、表(=シート)を表現する <table:table>
タグ に、table:print-ranges
属性を付加して、セル範囲で指示するようだ。
まず、下記は印刷設定がない場合。table:print="false"
が付いている。
<table:table table:name="シート1" table:style-name="ta1"
table:print="false"
>
~~~
</table:table>
下記は印刷設定を施した場合。table:print="false"
が消えて、table:print-ranges
が付加された。
<table:table table:name="シート1" table:style-name="ta1"
table:print-ranges="シート1.A1:シート1.G43"
>
~~~
</table:table>
"シート1.A1:シート1.G43"
という部分が、ページ設定の範囲を指示している。
おそらく、${シート名}.${開始セル}:${シート名}.${終了セル}
という書式になっている。
この設定を、スペース区切りで複数指定することで、複数ページを表現できるようだ。
table:print-ranges="シート1.A1:シート1.G25 シート1.A27:シート1.G83"
table:print-ranges
で指定した範囲は、連続しないで飛び飛びだったり、上下左右の辺が不ぞろいだったり、重なっていたり、自由なレイアウトで範囲を指示できる。
table:print-ranges
の範囲が、用紙の形やサイズに合わなかったりしたときに、範囲を分割して別ページになることがあるようだ。この途中改ページの設定を追加した *.ods ファイルをみても、table:print-ranges
の範囲指定に変化はなかった。
で、他に変化した箇所はないかと探してみたら、あった。
テーブルの行を表す <table:table-row>
タグに、table:style-name
属性がついている。こいつが、"ro3"
と指定されているセルの手前で自動改ページされているようだ。
<table:table-row table:style-name="ro3">
<table:table-cell table:number-columns-repeated="2" />
<table:table-cell office:value-type="string">
<text:p>いいいい</text:p>
</table:table-cell>
<table:table-cell table:number-columns-repeated="4" />
</table:table-row>
では、"ro3"
とはいったい何なんだろう?
と、探してみたら、同じく content.xml
の上の方に答えらしき記述を発見した。
<office:automatic-styles>
<!-- ~中略~ -->
<style:style style:name="ro3" style:family="table-row">
<style:table-row-properties
style:row-height="0.453cm"
fo:break-before="page"
style:use-optimal-row-height="true"
/>
</style:style>
<!-- ~中略~ -->
</office:automatic-styles>
"ro3"
について設定しているっぽいセクション。fo:break-before="page"
が指定されていると、手前で改ページするのだろう。他の <style:style>
タグでは、この値は "auto"
と指定されている。
とりいそぎ、こんなところで、ページ設定については結構いろいろできそうだ。
styles.xml
に、印刷時のヘッダーやフッターの設定っぽい記述も見られるが、これについてはまた今度分析してみることにしようと思う。
公開日: 2009年10月26日(Mon)