应用格式

表的每个元素都可以应用不同的格式。 例如,表格格式将应用于整个表格,行格式仅应用于特定行,单元格格式仅应用于某些单元格。

Aspose.Words提供了丰富的API来检索表并将格式应用于表。 您可以使用TableRowFormatCellFormat节点来设置格式。

在本文中,我们将讨论如何将格式应用于不同的表节点以及Aspose.Words支持哪些表格格式设置。

将格式应用于不同节点

在本节中,我们将介绍将格式应用于各种表节点。

表格级别格式

要对表应用格式设置,可以使用TablePreferredWidthTableCollection类使用相应Table节点上可用的属性。

下图显示了Microsoft Word中的Table格式特征及其在Aspose.Words中的相应属性的表示形式。

formattin-features-table-level-aspose-words-cpp

formatting-table-options-aspose-words-cpp

下面的代码示例演示如何将大纲边框应用于表:

下面的代码示例演示如何在启用所有边框(网格)的情况下构建表:

行级格式

行级

下图显示了Microsoft Word中的Row格式特征及其在Aspose.Words中的相应属性的表示形式。

formatting-row-level-aspose-words-cpp

下面的代码示例演示如何修改表行格式:

单元格级别格式

单元格级别的格式设置由CellCellFormatCellCollection类控制。

下图显示了Microsoft Word中的Cell格式特征及其在Aspose.Words中的相应属性的表示形式。

formatting-cell-level-aspose-words-cpp

auto-formatting-cell-level-aspose-words-cpp

下面的代码示例演示如何修改表格单元格的格式:

下面的代码示例演示如何设置要添加到单元格内容的左侧/顶部/右侧/底部的空间量(以点为单位:

指定行高

设置行高的最简单方法是使用DocumentBuilder。 使用适当的RowFormat属性,您可以设置默认高度设置或为表中的每行应用不同的高度。

在Aspose.Words中,表行高度由:

与此同时,可以为每行设置不同的高度-这使您可以广泛控制表格设置。

下面的代码示例演示如何创建包含单个单元格的表并应用行格式:

指定表格和单元格宽度

Microsoft Word文档中的表格提供了几种不同的方法来调整表格和单个单元格的大小。 这些属性允许对表的外观和行为进行相当大的控制,因此Aspose.Words支持表的行为,如Microsoft Word中所示。

重要的是要知道表元素具有几种不同的属性,这些属性会影响整个表的宽度以及单个单元格的计算方式:

  • 桌子上的首选宽度
  • 单个单元格的首选宽度
  • 允许自动在桌子上

本文详细介绍了各种表格宽度计算属性的工作原理以及如何完全控制表格宽度计算。 这是 在这种情况下,了解表布局未按预期显示的情况尤其有用。

如何使用首选宽度

表格或单个单元格的所需宽度是通过首选宽度属性定义的,该属性是元素努力适应的大小。 也就是说,可以为整个表格或单个单元格指定首选宽度。 在某些情况下,可能无法精确拟合此宽度,但在大多数情况下,实际宽度将接近此值。

使用PreferredWidth类的方法设置适当的首选宽度类型和值:

  • 指定自动或"无首选宽度"的Auto方法
  • 用于指定百分比宽度的FromPercent方法
  • 以点为单位指定宽度的FromPoints方法

下面的图片显示了Microsoft Word中的preferred width setting features及其在Aspose.Words中的相应属性的表示。

formatting-table-properties-aspose-words-cpp

下图显示了如何将这些选项应用于文档中的真实表格的示例。

todo:image_alt_text

指定首选表格或单元格宽度

在Aspose.Words中,使用Table.PreferredWidth属性和CellFormat.PreferredWidth属性设置表和单元格宽度,并在PreferredWidthType枚举中提供选项:

  • Auto,相当于没有首选宽度集
  • Percent,它相对于窗口或容器大小中的可用空间拟合元素,并在可用宽度更改时重新计算值
  • Points,它对应于以点为单位的指定宽度的元素

使用Table.PreferredWidth属性将调整其相对于其容器的首选宽度:页面,文本列或外部表格单元格(如果它是嵌套表格)。

下面的代码示例演示如何将表设置为自动适应页面宽度的50%:

在给定单元格上使用CellFormat.PreferredWidth属性将调整其首选宽度。

下面的代码示例演示如何设置不同的首选宽度设置:

查找首选宽度类型和值

您可以使用TypeValue属性查找所需表格或单元格的首选宽度详细信息。

下面的代码示例演示如何检索表单元格的首选宽度类型:

如何设置Autofit

AllowAutoFit属性允许表中的单元格根据选定的条件增长和收缩。 例如,您可以使用AutoFit to Window选项使表格适合页面的宽度,使用AutoFit to Content选项允许每个单元格根据其内容增长或缩小。

默认情况下,Aspose.Words使用AutoFit to Window插入一个新表。 表格将根据可用的页面宽度调整大小。 要调整表的大小,可以调用AutoFit方法。 此方法接受一个AutoFitBehavior枚举,该枚举指定对表应用何种类型的autofit。

重要的是要知道autofit方法实际上是在同一时间将不同属性应用于表的快捷方式。 这些属性实际上为表提供了观察到的行为。 我们将讨论每个autofit选项的这些属性。

下面的代码示例演示如何将表设置为根据其内容收缩或增长每个单元格:

AutoFit表到窗口

当自动调整窗口应用于表时,以下操作实际上是在后台执行的:

  1. 启用Table.AllowAutoFit属性可使用Table.PreferredWidth值100自动调整列大小以适应可用内容%
  2. CellFormat.PreferredWidth从所有表格单元格中删除
  3. 为当前表内容重新计算列宽–最终结果是占用整个可用宽度的表
  4. 当用户编辑文本时,表中列的宽度会自动更改

下面的代码示例演示如何将表自动填充到页面宽度:

AutoFit内容表

当表格被自动填充内容时,以下步骤实际上是在幕后执行的:

  1. 启用Table.AllowAutoFit属性以根据其内容自动调整每个单元格的大小

  2. 首选表格宽度从Table.PreferredWidth中删除,CellFormat.PreferredWidth为每个表格单元格删除

  3. 为当前表格内容重新计算列宽-最终结果是一个表格,其中列宽和整个表格的宽度会自动调整大小,以便在用户编辑文本时最适合内容

下面的代码示例演示如何将表自动填充到其内容:

在表中禁用AutoFit并使用固定列宽

如果某个表禁用了自动调整,并改用固定列宽,则执行以下步骤:

  1. Table.AllowAutoFit属性被禁用,因此列不会增长或收缩到其内容
  2. 整个表格的首选宽度从Table.PreferredWidth中删除,CellFormat.PreferredWidth从所有表格单元格中删除
  3. 最终结果是一个表,其列宽由CellFormat.Width属性确定,并且当用户输入文本或页面调整大小时,其列不会自动调整大小

下面的代码示例演示如何禁用autofit并为指定的表启用固定宽度:

计算单元格宽度时的优先顺序

Aspose.Words允许用户通过多个对象定义表格或单元格的宽度,包括CellFormat–其Width属性大部分是从以前的版本遗留下来的,但是,它对于简化设置单元格宽度仍然有用。

重要的是要知道CellFormat.Width属性的工作方式不同,具体取决于表中已存在的其他宽度属性。

Aspose.Words使用以下顺序计算单元格宽度:

秩序 物业 资料描述
AllowAutoFit确定 如果启用AutoFit:
-表格可能会超过首选宽度以容纳内容–它通常不会收缩到首选宽度以下
-对CellFormat.Width值的任何更改都将被忽略,单元格将适合其内容
PreferredWidthType值为PointsPercent CellFormat.Width被忽略
PreferredWidthType值为Auto CellFormat.Width中的值被复制并成为单元格的首选宽度(以点为单位)

允许单元格之间的间距

您可以获取或设置表格单元格之间的任何额外空间,类似于Microsoft Word中的"单元格间距"选项。 这可以使用AllowCellSpacing属性来完成。

下图显示了如何将这些选项应用于文档中的真实表格的示例。

formatting-spacing-between-cells-aspose-words-cpp

下面的代码示例演示如何设置单元格之间的间距:

应用边框和阴影

边框和阴影可以使用Table.SetBorderTable.SetBordersTable.SetShading应用于整个表格,也可以使用CellFormat.BordersCellFormat.Shading仅应用于特定单元格。 此外,可以使用RowFormat.Borders设置行边框,但不能以这种方式应用阴影。

下图显示了Microsoft Word中的边框和阴影设置以及它们在Aspose.Words中的相应属性。

formatting-border-line-aspose-words-cpp

formatting-cell-color-aspose-words-cpp

下面的代码示例演示如何设置具有不同边框和阴影的表格和单元格的格式: