设置电子表格文档格式

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


电子表格文档提供了用于设置单元格和页面格式的属性和方法。

单元格属性

可以使用很多选项来设置单元格格式,如指定文本的字体类型和大小等。每个单元格都支持 com.sun.star.style.CharacterPropertiescom.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)
阴影的大小,以百分之一毫米为单位
IsTransparent (Boolean)
将阴影设置为透明
Color (Long)
阴影的颜色

以下示例将数字 1000 写入 B2 单元格中,使用 CellBackColor 属性将背景颜色更改为红色,然后为该单元格创建向左下方移动 1 毫米的浅灰色阴影。

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)
文本的旋转角度,以百分之一度为单位

以下示例说明了如何“堆叠”单元格的内容,以便从单元格左上角开始依次排列各个字符。不会旋转这些字符。

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 提供了 queryKeyaddNew 方法,从而使您可以访问现有的数字格式以及创建您自己的数字格式。可以通过以下对象调用来访问这些方法:

NumberFormats = Doc.NumberFormats

格式是使用格式字符串指定的,格式字符串的结构与 Apache OpenOffice Basic 格式函数的结构类似。但它们之间有一个重要区别:命令格式要求使用英文缩写、小数点或字符作为千位分隔符;而 NumberFormats 对象的命令格式结构必须使用特定于国家/地区的缩写。

以下示例设置了单元格 B2 的格式,从而使数字显示三位小数并将逗号用作千位分隔符。

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 文档的页面属性(页边距和边框等)是使用 PageSetup 对象在 Worksheet 对象 (Excel) 级别或 Document 对象 (Word) 级别定义的。在 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)
页面宽度,以百分之一毫米为单位
Height (long)
页面高度,以百分之一毫米为单位
PrinterPaperTray (String)
要使用的打印机纸张来源名称

以下示例将“默认”页面样式的页面大小设置为 DIN A5 横向格式(高 14.8 厘米,宽 21 厘米):

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)
页面左边距宽度,以百分之一毫米为单位
RightMargin (long)
页面右边距宽度,以百分之一毫米为单位
TopMargin (long)
页面上边距宽度,以百分之一毫米为单位
BottomMargin (long)
页面下边距宽度,以百分之一毫米为单位
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)
页面左边框与页面内容之间的距离,以百分之一毫米为单位
RightBorderDistance (long)
页面右边框与页面内容之间的距离,以百分之一毫米为单位
TopBorderDistance (long)
页面上边框与页面内容之间的距离,以百分之一毫米为单位
BottomBorderDistance (long)
页面下边框与页面内容之间的距离,以百分之一毫米为单位
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)
页眉与页面左边距之间的距离,以百分之一毫米为单位
HeaderRightMargin (long)
页眉与页面右边距之间的距离,以百分之一毫米为单位
HeaderBodyDistance (long)
页眉与文档正文之间的距离,以百分之一毫米为单位
HeaderHeight (long)
页眉高度,以百分之一毫米为单位
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)
页眉内容与左边框之间的距离,以百分之一毫米为单位
HeaderRightBorderDistance (long)
页眉内容与右边框之间的距离,以百分之一毫米为单位
HeaderTopBorderDistance (long)
页眉内容与上边框之间的距离,以百分之一毫米为单位
HeaderBottomBorderDistance (long)
页眉内容与下边框之间的距离,以百分之一毫米为单位
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)
页脚与页面左边距之间的距离,以百分之一毫米为单位
FooterRightMargin (long)
页脚与页面右边距之间的距离,以百分之一毫米为单位
FooterBodyDistance (long)
页脚与文档正文之间的距离,以百分之一毫米为单位
FooterHeight (long)
页脚高度,以百分之一毫米为单位
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)
页脚内容与左边框之间的距离,以百分之一毫米为单位
FooterRightBorderDistance (long)
页脚内容与右边框之间的距离,以百分之一毫米为单位
FooterTopBorderDistance (long)
页脚内容与上边框之间的距离,以百分之一毫米为单位
FooterBottomBorderDistance (long)
页脚内容与下边框之间的距离,以百分之一毫米为单位
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 的页眉和页脚提供了三个文本元素。

以下示例将在“默认”模板的页眉左侧文本字段中写入 "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."

在本示例中,直接通过页面样式的 HeaderText 属性提供了访问,而不是通过 HeaderFooterContent 对象提供访问。

居中(仅适用于电子表格)

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