表計算ドキュメントの書式設定

From Apache OpenOffice Wiki
Jump to: navigation, search
doc OOo
Book.png


表計算ドキュメントには、セルおよびページ単位での書式設定を行うための属性とメソッドが用意されています。

セル属性

セルの書式設定としては、表示フォントの種類やサイズなど、各種の項目があります。個々のセルは com.sun.star.style.CharacterProperties および com.sun.star.style.ParagraphProperties サービスをサポートしていますが、これらが使用する主要な属性については「文書ドキュメント」で説明しています。また特殊なセル書式については、com.sun.star.table.CellProperties サービスで処理します。このサービスで使用する主要な属性については、次の節で説明します。

これらの属性は、個々のセルおよびセル範囲に対して指定できます。

Documentation note.png Apache OpenOffice API の CellProperties オブジェクトは、VBA の Interior オブジェクトに相当しますが、これはセル固有の属性の指定にも使用します。

背景色および影

com.sun.star.table.CellProperties サービスには、背景色および影の表示指定用に、次の属性が用意されています。

CellBackColor (Long)
テーブルのセルの背景色。
IsCellBackgroundTransparent (Boolean)
背景色を透明にする指定。
ShadowFormat (struct)
セルの影の指定 (com.sun.star.table.ShadowFormat に定められた構造体)。

com.sun.star.table.ShadowFormat 構造体とセルの影指定は、次のような構成になっています。

Location (enum)
影の位置 (com.sun.star.table.ShadowLocation 構造体の値)。
ShadowWidth (Short)
100 分の 1 ミリ単位で指定した影の幅。
IsTransparent (Boolean)
影を透明にする指定。
Color (Long)
影の色。

次のサンプルコードでは、B2 セルへの数値 1000 の入力、CellBackColor 属性による背景色の赤への変更、左下側 1 mm の位置への明るい灰色の影の表示を行います。

Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Dim ShadowFormat As New com.sun.star.table.ShadowFormat
 
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
Cell = Sheet.getCellByPosition(1,1)
 
Cell.Value = 1000
 
Cell.CellBackColor = RGB(255, 0, 0)
 
ShadowFormat.Location = com.sun.star.table.ShadowLocation.BOTTOM_RIGHT
ShadowFormat.ShadowWidth = 100
ShadowFormat.Color = RGB(160, 160, 160)
 
Cell.ShadowFormat = ShadowFormat

テキストの配置

Apache OpenOffice には、テーブルのセルのテキスト配置を指定する各種の機能が用意されています。

次の属性は、テキストの水平および垂直方向の配置を指定するものです。

HoriJustify (enum)
テキストの水平方向の配置 (com.sun.star.table.CellHoriJustify の値)。
VertJustify (enum)
テキストの垂直方向の配置 (com.sun.star.table.CellVertJustify の値)。
Orientation (enum)
テキストの向き (com.sun.star.table.CellOrientation に定められた値)。
IsTextWrapped (Boolean)
セル内の自動行ブレークを許可する指定。
RotateAngle (Long)
100 分の 1 度単位で指定したテキストの回転角。

次のサンプルコードでは、左上隅にあるセルの表示を「縦書き」 (stack) にして、文字を 1 文字ずつ下方向に並べて表示します。なお、文字の回転は指定していません。

Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
 
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
Cell = Sheet.getCellByPosition(1,1)
 
Cell.Value = 1000
 
Cell.HoriJustify = com.sun.star.table.CellHoriJustify.LEFT
Cell.VertJustify = com.sun.star.table.CellVertJustify.TOP
Cell.Orientation = com.sun.star.table.CellOrientation.STACKED

数値、日付、テキストの書式

Apache OpenOffice には、日付および時刻に対する各種の書式が用意されています。これらの書式にはそれぞれ固有の内部番号が割り当てられており、NumberFormat 属性による書式指定もこの番号を使用します。Apache OpenOffice では、queryKey および addNew メソッドを利用して、既存の数値の書式にアクセスできるだけでなく、数値の書式をユーザー定義することもできます。これらのメソッドには、次のようなオブジェクト呼び出しでアクセスします。

NumberFormats = Doc.NumberFormats

書式の指定は、Apache OpenOffice Basic の Format 関数とよく似た形式のフォーマット用文字列を使用します。ただし両者の間には大きな違いがあり、Format 関数のフォーマット用文字列は英語式の小数点と千単位の桁区切り記号を使用しますが、NumberFormats オブジェクトのフォーマット用文字列には、各ロケール別の記号を使う必要があります。

次のサンプルコードでは、B2 セルに対して、小数部を 3 桁表示とし、コンマを千単位の桁区切りの記号とする数の書式を指定しています。

Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Dim NumberFormats As Object
Dim NumberFormatString As String
Dim NumberFormatId As Long
Dim LocalSettings As New com.sun.star.lang.Locale
 
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
Cell = Sheet.getCellByPosition(1,1)
 
Cell.Value = 23400.3523565
 
LocalSettings.Language = "en"
LocalSettings.Country = "us"
 
NumberFormats = Doc.NumberFormats
NumberFormatString = "#,##0.000"
 
NumberFormatId = NumberFormats.queryKey(NumberFormatString, LocalSettings, True)
If NumberFormatId = -1 Then
   NumberFormatId = NumberFormats.addNew(NumberFormatString, LocalSettings)
End If
 
MsgBox NumberFormatId
Cell.NumberFormat = NumberFormatId

セルの別の書式設定用オプションについては、Apache OpenOffice Calc の「セルの書式設定」ダイアログで概要を参照してください。

ページ属性

ページ属性では、ドキュメントの内容を書式設定オプションによって各ページに配置したり、全ページに共通して配置する項目を設定したりします。具体的には、次のようなオプションを指定します。

  • 用紙サイズ
  • ページ余白
  • ヘッダとフッタ

ページ書式は、他の書式指定と設定法が異なります。セル、段落、テキストの書式は直接指定できますが、ページ書式はページスタイルを用いた間接的な設定も行えます。たとえば、ヘッダやフッタは、ページスタイルとして登録できます。

以降の節では、表計算ドキュメントの主要なページ書式設定オプションについて説明します。ここで説明するページスタイルの多くは、文書ドキュメントと共通するものです。こうした共通で使用されるページ属性は、com.sun.star.style.PageProperties サービスで定義されています。これに対して、表計算ドキュメント固有のページ属性は、com.sun.star.sheet.TablePageStyle サービスで定義されています。

Documentation note.png Microsoft Office ドキュメントのページ属性 (ページ余白、枠線など) は、Worksheet オブジェクト (Excel) または Document オブジェクト (Word) レベルの PageSetup オブジェクトで指定します。Apache OpenOffice の場合、このような属性の指定はページスタイルを用いて行い、その後これらのページスタイルを該当するドキュメントにリンクさせる形になります。

ページ背景

com.sun.star.style.PageProperties サービスには、ページ背景に関する次の属性が用意されています。

BackColor (long)
背景の色。
BackGraphicURL (String)
背景に表示する画像の URL。
BackGraphicFilter (String)
背景用の画像を解釈するフィルタ名。
BackGraphicLocation (Enum)
背景用の画像の位置 (列挙型で定められた値)。
BackTransparent (Boolean)
背景を透明にする指定。

ページ書式

ページ書式の指定には、次の com.sun.star.style.PageProperties サービスの属性を使用します。

IsLandscape (Boolean)
横長書式。
Width (long)
100 分の 1 ミリ単位で指定したページの幅。
Height (long)
100 分の 1 ミリ単位で指定したページの高さ。
PrinterPaperTray (String)
使用するプリンタの用紙トレイの名前。

次のサンプルコードでは、「標準」ページスタイルのページサイズを、A5 サイズ (高さ 14.8 cm、幅 21 cm) の横長書式に設定します。

Dim Doc As Object
Dim Sheet As Object
Dim StyleFamilies As Object 
Dim PageStyles As Object
Dim DefPage As Object
 
Doc = StarDesktop.CurrentComponent
StyleFamilies = Doc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Default")
 
DefPage.IsLandscape = True
DefPage.Width = 21000
DefPage.Height = 14800

ページ余白、外枠、影

com.sun.star.style.PageProperties サービスには、ページの余白、外枠、影の設定用に、次の属性が用意されています。

LeftMargin (long)
100 分の 1 ミリ単位で指定したページの左余白。
RightMargin (long)
100 分の 1 ミリ単位で指定したページの右余白。
TopMargin (long)
100 分の 1 ミリ単位で指定したページの上余白。
BottomMargin (long)
100 分の 1 ミリ単位で指定したページの下余白。
LeftBorder (struct)
左側のページの外枠線の指定 (com.sun.star.table.BorderLine 構造体)。
RightBorder (struct)
右側のページの外枠線の指定 (com.sun.star.table.BorderLine 構造体)。
TopBorder (struct)
上側のページの外枠線の指定 (com.sun.star.table.BorderLine 構造体)。
BottomBorder (struct)
下側のページの外枠線の指定 (com.sun.star.table.BorderLine 構造体)。
LeftBorderDistance (long)
100 分の 1 ミリ単位で指定した、左側のページの外枠線とページ本文との距離。
RightBorderDistance (long)
100 分の 1 ミリ単位で指定した、右側のページの外枠線とページ本文との距離。
TopBorderDistance (long)
100 分の 1 ミリ単位で指定した、上側のページの外枠線とページ本文との距離。
BottomBorderDistance (long)
100 分の 1 ミリ単位で指定した、下側のページの外枠線とページ本文との距離。
ShadowFormat (struct)
ページの内容領域の影の指定 (com.sun.star.table.ShadowFormat 構造体)。

次のサンプルコードでは、「標準」ページスタイルの左および右側の余白を、1 センチメートルに指定しています。

Dim Doc As Object
Dim Sheet As Object
Dim StyleFamilies As Object 
Dim PageStyles As Object
Dim DefPage As Object
 
Doc = StarDesktop.CurrentComponent
StyleFamilies = Doc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Default")
 
DefPage.LeftMargin = 1000
DefPage.RightMargin = 1000

ヘッダとフッタ

ドキュメントのヘッダおよびフッタもページ属性として扱われるもので、これらも com.sun.star.style.PageProperties サービスで定義されています。ヘッダの書式設定には、次の属性を使用します。

HeaderIsOn (Boolean)
ヘッダを有効化。
HeaderLeftMargin (long)
100 分の 1 ミリ単位で指定した、左ページ余白からヘッダまでの距離。
HeaderRightMargin (long)
100 分の 1 ミリ単位で指定した、右ページ余白からヘッダまでの距離。
HeaderBodyDistance (long)
100 分の 1 ミリ単位で指定した、ページ本文領域からヘッダまでの距離。
HeaderHeight (long)
100 分の 1 ミリ単位で指定したヘッダの高さ。
HeaderIsDynamicHeight (Boolean)
ヘッダの高さを表示内容に自動的に合わせる指定。
HeaderLeftBorder (struct)
ヘッダ周囲の左側の外枠線の詳細指定 (com.sun.star.table.BorderLine 構造体)。
HeaderRightBorder (struct)
ヘッダ周囲の右側の外枠線の詳細指定 (com.sun.star.table.BorderLine 構造体)。
HeaderTopBorder (struct)
ヘッダ周囲の上側の外枠線の詳細指定 (com.sun.star.table.BorderLine 構造体)。
HeaderBottomBorder (struct)
ヘッダ周囲の下側の外枠線の詳細指定 (com.sun.star.table.BorderLine 構造体)。
HeaderLeftBorderDistance (long)
100 分の 1 ミリ単位で指定した、左側の外枠線からヘッダ本文までの距離。
HeaderRightBorderDistance (long)
100 分の 1 ミリ単位で指定した、右側の外枠線からヘッダ本文までの距離。
HeaderTopBorderDistance (long)
100 分の 1 ミリ単位で指定した、上側の外枠線からヘッダ本文までの距離。
HeaderBottomBorderDistance (long)
100 分の 1 ミリ単位で指定した、下側の外枠線からヘッダ本文までの距離。
HeaderIsShared (Boolean)
左右のページで共通のヘッダを使う指定 (HeaderTextHeaderTextLeftHeaderTextRight を参照)。
HeaderBackColor (long)
ヘッダの背景色。
HeaderBackGraphicURL (String)
背景に表示する画像の URL。
HeaderBackGraphicFilter (String)
ヘッダの背景画像を解釈するフィルタ名。
HeaderBackGraphicLocation (Enum)
ヘッダの背景画像の位置 (com.sun.star.style.GraphicLocation の列挙型で定められた値)。
HeaderBackTransparent (Boolean)
ヘッダの背景を透明に表示する指定。
HeaderShadowFormat (struct)
ヘッダの影の詳細指定 (com.sun.star.table.ShadowFormat 構造体)。

フッタの書式設定には、次の属性を使用します。

FooterIsOn (Boolean)
フッタを有効化。
FooterLeftMargin (long)
100 分の 1 ミリ単位で指定した、左ページ余白からフッタまでの距離。
FooterRightMargin (long)
100 分の 1 ミリ単位で指定した、右ページ余白からフッタまでの距離。
FooterBodyDistance (long)
100 分の 1 ミリ単位で指定した、ページ本文領域からフッタまでの距離。
FooterHeight (long)
100 分の 1 ミリ単位で指定したフッタの高さ。
FooterIsDynamicHeight (Boolean)
フッタの高さを表示内容に自動的に合わせる指定。
FooterLeftBorder (struct)
フッタ周囲の左側の外枠線の詳細指定 (com.sun.star.table.BorderLine 構造体)。
FooterRightBorder (struct)
フッタ周囲の右側の外枠線の詳細指定 (com.sun.star.table.BorderLine 構造体)。
FooterTopBorder (struct)
フッタ周囲の上側の外枠線の詳細指定 (com.sun.star.table.BorderLine 構造体)。
FooterBottomBorder (struct)
フッタ周囲の下側の外枠線の詳細指定 (com.sun.star.table.BorderLine 構造体)。
FooterLeftBorderDistance (long)
100 分の 1 ミリ単位で指定した、左側の外枠線からフッタ本文までの距離。
FooterRightBorderDistance (long)
100 分の 1 ミリ単位で指定した、右側の外枠線からフッタ本文までの距離。
FooterTopBorderDistance (long)
100 分の 1 ミリ単位で指定した、上側の外枠線からフッタ本文までの距離。
FooterBottomBorderDistance (long)
100 分の 1 ミリ単位で指定した、下側の外枠線からフッタ本文までの距離。
FooterIsShared (Boolean)
左右のページで共通のフッタを使う指定 (FooterTextFooterTextLeftFooterTextRight を参照)。
FooterBackColor (long)
フッタの背景色。
FooterBackGraphicURL (String)
背景に表示する画像の URL。
FooterBackGraphicFilter (String)
フッタの背景画像を解釈するフィルタ名。
FooterBackGraphicLocation (Enum)
フッタの背景画像の位置 (com.sun.star.style.GraphicLocation の列挙型で定められた値)。
FooterBackTransparent (Boolean)
フッタの背景を透明に表示する指定。
FooterShadowFormat (struct)
フッタの影の詳細指定 (com.sun.star.table.ShadowFormat 構造体)。

ヘッダおよびフッタの表示テキストの変更

表計算ドキュメントのヘッダやフッタの内容へアクセスするには、次の属性を使用します。

LeftPageHeaderContent (Object)
偶数ページのヘッダの表示内容 (com.sun.star.sheet.HeaderFooterContent サービス)。
RightPageHeaderContent (Object)
奇数ページのヘッダの表示内容 (com.sun.star.sheet.HeaderFooterContent サービス)。
LeftPageFooterContent (Object)
偶数ページのフッタの表示内容 (com.sun.star.sheet.HeaderFooterContent サービス)。
RightPageFooterContent (Object)
奇数ページのフッタの表示内容 (com.sun.star.sheet.HeaderFooterContent サービス)。

偶数ページと奇数ページで共通のヘッダやフッタを用いる場合は (FooterIsShared 属性に False を指定)、それぞれ奇数ページ用の属性を指定します。

これらのオブジェクトは、com.sun.star.sheet.HeaderFooterContent サービスをサポートしたオブジェクトを返します。このサービスでは、LeftTextCenterTextRightText という (疑似) 属性を用いて、Apache OpenOffice Calc のヘッダやフッタに関する 3 種類のテキスト要素を利用できます。

次のサンプルコードを使うと、「デフォルト」テンプレートで、ヘッダの左側のテキストフィールドに「Just a Test.」と書き込まれます。

Dim Doc As Object
Dim Sheet As Object
Dim StyleFamilies As Object 
Dim PageStyles As Object
Dim DefPage As Object
Dim HText As Object
Dim HContent As Object
Doc = StarDesktop.CurrentComponent
StyleFamilies = Doc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Default")
 
DefPage.HeaderIsOn = True
HContent = DefPage.RightPageHeaderContent
HText = HContent.LeftText
HText.String = "Just a Test."
DefPage.RightPageHeaderContent = HContent

サンプルコードの最後の行に注意してください。テキストを変更する場合、変更を有効にするには、TextContent オブジェクトをヘッダに再割り当てする必要があります。

文書ドキュメント (Apache OpenOffice Writer) の場合、ヘッダやフッタは単一のテキストブロックから構成されているため、他の方法でヘッダやフッタの表示テキストを変更できます。次の属性は、com.sun.star.style.PageProperties サービスに定義されています。

HeaderText (Object)
ヘッダの内容を含むテキストオブジェクト (com.sun.star.text.XText サービス)。
HeaderTextLeft (Object)
左側のページのヘッダの内容を含むテキストオブジェクト (com.sun.star.text.XText サービス)。
HeaderTextRight (Object)
右側のページのヘッダの内容を含むテキストオブジェクト (com.sun.star.text.XText サービス)。
FooterText (Object)
フッタの内容を含むテキストオブジェクト (com.sun.star.text.XText サービス)。
FooterTextLeft (Object)
左側のページのフッタの内容を含むテキストオブジェクト (com.sun.star.text.XText サービス)。
FooterTextRight (Object)
右側のページのフッタの内容を含むテキストオブジェクト (com.sun.star.text.XText サービス)。

次のサンプルコードでは、文書ドキュメントの「標準」ページスタイルにヘッダを作成し、そのヘッダにテキスト「Just a Test.」を追加しています。

Dim Doc As Object
Dim Sheet As Object
Dim StyleFamilies As Object 
Dim PageStyles As Object
Dim DefPage As Object
Dim HText As Object
 
Doc = StarDesktop.CurrentComponent
StyleFamilies = Doc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Default")
 
DefPage.HeaderIsOn = True
HText = DefPage.HeaderText 
 
HText.String = "Just a Test."

この場合は、HeaderFooterContent オブジェクトではなく、ページスタイルの HeaderText 属性を使用してヘッダに直接アクセスしています。

中央揃え (表計算ドキュメントのみ)

com.sun.star.sheet.TablePageStyle サービスは、Apache OpenOffice Calc のページスタイルでのみ使用するもので、印刷するセル範囲をページの中央に配置させることができます。このサービスでは、次の属性を利用できます。

CenterHorizontally (Boolean)
表の内容を水平方向に中央揃え。
CenterVertically (Boolean)
表の内容を垂直方向に中央揃え。

印刷対象の指定 (表計算ドキュメントのみ)

スプレッドシートの書式設定では、ページ上の各種要素を印刷させるかどうかを指定できます。com.sun.star.sheet.TablePageStyle サービスには、このような処理を行うために次の属性が用意されています。

PrintAnnotations (Boolean)
セルのコメントを印刷する指定。
PrintGrid (Boolean)
セルのグリッド線を印刷する指定。
PrintHeaders (Boolean)
行と列の見出しを印刷する指定。
PrintCharts (Boolean)
シートに含まれるグラフを印刷する指定。
PrintObjects (Boolean)
埋め込みオブジェクトを印刷する指定。
PrintDrawing (Boolean)
図形描画オブジェクトを印刷する指定。
PrintDownFirst (Boolean)
シートの印刷範囲が複数ページにまたがる場合に、上から下の方向に印刷してから右側のページという順番で印刷する指定。
PrintFormulas (Boolean)
計算された値ではなく数式を印刷する指定。
PrintZeroValues (Boolean)
ゼロの値を印刷する指定。


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools