应用格式
表的每个元素都可以应用不同的格式。 例如,表格格式将应用于整个表格,行格式仅应用于特定行,单元格格式仅应用于某些单元格。
Aspose.Words提供了丰富的API来检索表并将格式应用于表。 您可以使用Table、RowFormat和CellFormat节点来设置格式。
在本文中,我们将讨论如何将格式应用于不同的表节点以及Aspose.Words支持哪些表格格式设置。
将格式应用于不同节点
在本节中,我们将介绍将格式应用于各种表节点。
表格级别格式
要对表应用格式设置,可以使用Table、PreferredWidth和TableCollection类使用相应Table节点上可用的属性。
下图显示了Microsoft Word中的Table格式特征及其在Aspose.Words中的相应属性的表示形式。
下面的代码示例演示如何将大纲边框应用于表:
下面的代码示例演示如何在启用所有边框(网格)的情况下构建表:
行级格式
行级
下图显示了Microsoft Word中的Row格式特征及其在Aspose.Words中的相应属性的表示形式。
下面的代码示例演示如何修改表行格式:
单元格级别格式
单元格级别的格式设置由Cell、CellFormat和CellCollection类控制。
请注意,Cell只能是Row的子节点。 与此同时,Cell中必须至少有一个Paragraph,以便可以对其应用格式化。
除了Paragraph之外,您还可以将Table插入Cell。
下图显示了Microsoft Word中的Cell格式特征及其在Aspose.Words中的相应属性的表示形式。
下面的代码示例演示如何修改表格单元格的格式:
下面的代码示例演示如何设置要添加到单元格内容的左侧/顶部/右侧/底部的空间量(以点为单位:
指定行高
设置行高的最简单方法是使用DocumentBuilder。 使用适当的RowFormat属性,您可以设置默认高度设置或为表中的每行应用不同的高度。
在Aspose.Words中,表行高度由:
- 行高属性-Height
- 给定行的高度规则属性-HeightRule
与此同时,可以为每行设置不同的高度-这使您可以广泛控制表格设置。
下面的代码示例演示如何创建包含单个单元格的表并应用行格式:
指定表格和单元格宽度
Microsoft Word文档中的表格提供了几种不同的方法来调整表格和单个单元格的大小。 这些属性允许对表的外观和行为进行相当大的控制,因此Aspose.Words支持表的行为,如Microsoft Word中所示。
重要的是要知道表元素具有几种不同的属性,这些属性会影响整个表的宽度以及单个单元格的计算方式:
- 桌子上的首选宽度
- 单个单元格的首选宽度
- 允许自动在桌子上
本文详细介绍了各种表格宽度计算属性的工作原理以及如何完全控制表格宽度计算。 这是 在这种情况下,了解表布局未按预期显示的情况尤其有用。
在大多数情况下,建议使用首选单元格而不是表格宽度。 首选单元格宽度更符合DOCX格式规范以及Aspose.Words模型。
单元格宽度实际上是DOCX格式的计算值。 实际的单元格宽度可以取决于很多事情。 例如,更改页边距或首选表格宽度可能会影响实际单元格宽度。
首选单元格宽度是存储在文档中的单元格属性。 它不依赖于任何内容,并且在更改单元格的表或其他属性时不会更改。
如何使用首选宽度
表格或单个单元格的所需宽度是通过首选宽度属性定义的,该属性是元素努力适应的大小。 也就是说,可以为整个表格或单个单元格指定首选宽度。 在某些情况下,可能无法精确拟合此宽度,但在大多数情况下,实际宽度将接近此值。
使用PreferredWidth类的方法设置适当的首选宽度类型和值:
- 指定自动或"无首选宽度"的Auto方法
- 用于指定百分比宽度的FromPercent方法
- 以点为单位指定宽度的FromPoints方法
下面的图片显示了Microsoft Word中的preferred width setting features及其在Aspose.Words中的相应属性的表示。
下图显示了如何将这些选项应用于文档中的真实表格的示例。
指定首选表格或单元格宽度
在Aspose.Words中,使用Table.PreferredWidth属性和CellFormat.PreferredWidth属性设置表和单元格宽度,并在PreferredWidthType枚举中提供选项:
- Auto,相当于没有首选宽度集
- Percent,它相对于窗口或容器大小中的可用空间拟合元素,并在可用宽度更改时重新计算值
- Points,它对应于以点为单位的指定宽度的元素
使用Table.PreferredWidth属性将调整其相对于其容器的首选宽度:页面,文本列或外部表格单元格(如果它是嵌套表格)。
下面的代码示例演示如何将表设置为自动适应页面宽度的50%:
在给定单元格上使用CellFormat.PreferredWidth属性将调整其首选宽度。
下面的代码示例演示如何设置不同的首选宽度设置:
查找首选宽度类型和值
您可以使用Type和Value属性查找所需表格或单元格的首选宽度详细信息。
下面的代码示例演示如何检索表单元格的首选宽度类型:
如何设置Autofit
AllowAutoFit属性允许表中的单元格根据选定的条件增长和收缩。 例如,您可以使用AutoFit to Window选项使表格适合页面的宽度,使用AutoFit to Content选项允许每个单元格根据其内容增长或缩小。
默认情况下,Aspose.Words使用AutoFit to Window插入一个新表。 表格将根据可用的页面宽度调整大小。 要调整表的大小,可以调用AutoFit方法。 此方法接受一个AutoFitBehavior枚举,该枚举指定对表应用何种类型的autofit。
重要的是要知道autofit方法实际上是在同一时间将不同属性应用于表的快捷方式。 这些属性实际上为表提供了观察到的行为。 我们将讨论每个autofit选项的这些属性。
下面的代码示例演示如何将表设置为根据其内容收缩或增长每个单元格:
AutoFit表到窗口
当自动调整窗口应用于表时,以下操作实际上是在后台执行的:
- 启用Table.AllowAutoFit属性可使用Table.PreferredWidth值100自动调整列大小以适应可用内容%
- CellFormat.PreferredWidth从所有表格单元格中删除
请注意,这与Microsoft Word行为略有不同,其中每个单元格的首选宽度根据其当前大小和内容设置为适当的值。 Aspose.Words不会更新首选宽度,因此它们只是被清除。
- 为当前表内容重新计算列宽–最终结果是占用整个可用宽度的表
- 当用户编辑文本时,表中列的宽度会自动更改
下面的代码示例演示如何将表自动填充到页面宽度:
AutoFit内容表
当表格被自动填充内容时,以下步骤实际上是在幕后执行的:
-
启用Table.AllowAutoFit属性以根据其内容自动调整每个单元格的大小
-
首选表格宽度从Table.PreferredWidth中删除,CellFormat.PreferredWidth为每个表格单元格删除
请注意,此autofit选项从单元格中删除首选宽度,就像在Microsoft Word中一样。 如果要保留列大小并增加或减少列以适应内容,则应自行将Table.AllowAutoFit属性设置为True,而不是使用autofit快捷方式。 -
为当前表格内容重新计算列宽-最终结果是一个表格,其中列宽和整个表格的宽度会自动调整大小,以便在用户编辑文本时最适合内容
下面的代码示例演示如何将表自动填充到其内容:
在表中禁用AutoFit并使用固定列宽
如果某个表禁用了自动调整,并改用固定列宽,则执行以下步骤:
- Table.AllowAutoFit属性被禁用,因此列不会增长或收缩到其内容
- 整个表格的首选宽度从Table.PreferredWidth中删除,CellFormat.PreferredWidth从所有表格单元格中删除
- 最终结果是一个表,其列宽由CellFormat.Width属性确定,并且当用户输入文本或页面调整大小时,其列不会自动调整大小
下面的代码示例演示如何禁用autofit并为指定的表启用固定宽度:
计算单元格宽度时的优先顺序
Aspose.Words允许用户通过多个对象定义表格或单元格的宽度,包括CellFormat–其Width属性大部分是从以前的版本遗留下来的,但是,它对于简化设置单元格宽度仍然有用。
重要的是要知道CellFormat.Width属性的工作方式不同,具体取决于表中已存在的其他宽度属性。
Aspose.Words使用以下顺序计算单元格宽度:
秩序 | 物业 | 资料描述 |
---|---|---|
AllowAutoFit确定 | 如果启用AutoFit: -表格可能会超过首选宽度以容纳内容–它通常不会收缩到首选宽度以下 -对CellFormat.Width值的任何更改都将被忽略,单元格将适合其内容 |
|
PreferredWidthType值为Points或Percent | CellFormat.Width被忽略 | |
PreferredWidthType值为Auto | CellFormat.Width中的值被复制并成为单元格的首选宽度(以点为单位) |
允许单元格之间的间距
您可以获取或设置表格单元格之间的任何额外空间,类似于Microsoft Word中的"单元格间距"选项。 这可以使用AllowCellSpacing属性来完成。
下图显示了如何将这些选项应用于文档中的真实表格的示例。
下面的代码示例演示如何设置单元格之间的间距:
应用边框和阴影
边框和阴影可以使用Table.SetBorder、Table.SetBorders和Table.SetShading应用于整个表格,也可以使用CellFormat.Borders和CellFormat.Shading仅应用于特定单元格。 此外,可以使用RowFormat.Borders设置行边框,但不能以这种方式应用阴影。
下图显示了Microsoft Word中的边框和阴影设置以及它们在Aspose.Words中的相应属性。
下面的代码示例演示如何设置具有不同边框和阴影的表格和单元格的格式: