使用样式

使用样式

使用样式

本指南展示了如何在使用段落、字符、表格和列表样式 Aspose.Words FOSS 用于 .NET — 查找并应用内置和自定义样式,以及在表格样式上配置按区域的条件格式。

一个 Style 对象表示单个内置或用户定义的样式——Word 在段落或运行被分配该样式时应用的、包含段落、字体和列表格式的具名集合。每个文档通过 Document.Styles 属性公开其样式,该属性返回一个 StyleCollection。表格样式由 TableStyle 表示,它是 Style 的子类,添加了表格特定的格式以及通过 ConditionalStyleCollection 实现的区域条件格式。


样式类型和标识

每个 Style 都有一个类型为 StyleType 的 Type 属性,该属性的取值之一为 Paragraph、Character、Table 或 List——对应 Word 支持的四种样式。内置样式还携带一个与地区无关的 StyleIdentifier 枚举值(例如对应标题、强调和超链接样式的值),以便代码能够在不依赖特定语言显示名称的情况下查找内置样式。样式的可读名称可通过 Style.Name 获取,Style.Aliases 则返回 Word 为同一样式识别的任何别名。Style.BuiltIn 报告该样式是随 Word 本身一起提供的,还是在文档中定义的,Style.IsHeading 报告该样式是否为内置的标题样式之一。

访问和管理样式集合

StyleCollection 是文档中所有 Style 对象(包括内置和自定义)的集合,可通过 Document.Styles 访问。使用 StyleCollection 索引器——styles[name]——可按显示名称检索样式,或使用相同索引器通过其地区无关的 StyleIdentifier 检索内置样式——styles[sti]——这比在不同语言编写的文档中按名称查找更可靠。新样式使用 StyleCollection.Add(type, name) 创建,指定 StyleType 和名称,现有样式可通过 StyleCollection.AddCopy(style) 复制到集合中。StyleCollection.Count 报告文档拥有的样式数量,集合还公开 DefaultFont 和 DefaultParagraphFormat,它们描述在应用任何显式样式之前,新内容继承的全局默认格式。StyleCollection.ClearQuickStyleGallery() 将所有样式从 Word UI 的快速样式库中移除,但不删除这些样式本身。

对段落和运行应用样式

能够携带样式的格式化对象同时公开一个 Style 属性(即 Style 对象本身)和一个 StyleName 属性(一个通过名称解析或创建样式的快捷方式)。ParagraphFormat.Style 和 ParagraphFormat.StyleName 应用段落样式,而 Font.Style 和 Font.StyleName 将字符样式应用于运行的格式。样式自身的 LinkedStyleName、BaseStyleName 和 NextParagraphStyleName 属性描述它与其他样式的关系:BaseStyleName 指定它继承未设置格式的样式,LinkedStyleName 指定配对的段落/字符样式(如 Word 对内置样式 Heading 1 及其关联字符样式的处理),NextParagraphStyleName 指定 Word 为在使用此样式后输入的新段落分配的样式。

表格样式和条件格式化

TableStyle 扩展了 Style,添加了表布局属性,例如 Alignment、CellSpacing、LeftIndent、Shading、VerticalAlignment,以及内边距(LeftPadding、RightPadding、TopPadding、BottomPadding),再加上 RowStripe 和 ColumnStripe,它们控制条纹模式在多少行或列上重复。除了统一的表格格式外,TableStyle.ConditionalStyles 返回一个 ConditionalStyleCollection,其中每个表格区域包含一个 ConditionalStyle——FirstRow、LastRow、FirstColumn、LastColumn、OddRowBanding、EvenRowBanding、OddColumnBanding、EvenColumnBanding,以及四个角落单元格(TopLeftCell、TopRightCell、BottomLeftCell、BottomRightCell)。每个 ConditionalStyle 拥有其自己的 Font、ParagraphFormat、Shading、Borders 和单元格内边距,其 Type 属性报告它代表的 ConditionalStyleType 区域。ConditionalStyle.ClearFormatting() 和 ConditionalStyleCollection.ClearFormatting() 重置单个区域或整个条件区域集合的格式。

样式元数据和行为标志

在 Style 上的多个布尔和数值属性控制 Word 在 UI 中如何处理样式,而非其渲染方式:Locked 在启用格式保护时阻止样式被更改,IsQuickStyle 控制其是否出现在快速样式库中,AutomaticallyUpdate 使样式从手动应用的直接格式重新定义自身,SemiHidden 和 UnhideWhenUsed 控制样式在首次使用前后在样式列表中的可见性,Priority 影响其在库中的排序顺序。当样式定义列表编号时,还会公开 List 和 ListFormat 属性,Style.Remove() 则从其 StyleCollection 中删除该样式。


提示与最佳实践

  • 在查找内置样式时,优先使用带有 StyleIdentifier 值的 StyleCollection 索引器,而不是按名称查找——名称会本地化,而 StyleIdentifier 值不会。
  • 将 BaseStyleName 设置为构建样式层级(例如,一组标题样式都从同一基础样式继承字体选择),而不是在每个样式上重复格式设置。
  • 在文档之间复制样式时,使用 StyleCollection.AddCopy(style),而不是手动读取并重新应用每个格式属性。
  • 为交错表格配置 TableStyle.ConditionalStyles 区域,而不是在代码中手动格式化交替行——每个 ConditionalStyle 区域的格式是根据其 ConditionalStyleType 应用的,而不是在单独的行上直接设置格式。
  • 在以编程方式删除或重命名样式之前检查 Style.BuiltIn;内置样式通常在文档其他位置通过名称被引用。

常见问题

问题原因修复
StyleCollection 索引器在名称查找时返回 null此文档中不存在该样式名称,或者内置样式尚未使用,导致 Word 尚未实例化它。检查 Style.Aliases 以获取别名,或改用带有 StyleIdentifier 的 StyleCollection 索引器来使用内置样式
设置 StyleName 会意外创建一个新样式如果集合中尚不存在,StyleName 将创建具名样式首先使用 StyleCollection 索引器确认样式是否存在,或通过 Style 属性直接分配 Style 对象
应用 TableStyle 后,表格带状效果未显示在 TableStyle.ConditionalStyles 上从未配置条件格式化区域(OddRowBanding、EvenRowBanding 等)在 ConditionalStyleCollection 中对相关的 ConditionalStyle 条目设置格式
样式更改不会影响已经使用该样式的内容直接(手动)格式化已叠加在样式之上并具有优先权清除受影响的运行/段落上的直接格式化,或设置 Style.AutomaticallyUpdate

FAQ

如何获取文档中所有样式的集合?

读取 Document.Styles,它返回一个包含该文档中所有内置和用户定义的 Style 的 StyleCollection。

Style 和 StyleIdentifier 有什么区别?

Style 是实际的样式对象及其格式; StyleIdentifier 是一个与区域设置无关的枚举值,用于查找特定 内置 样式,无论文档语言如何,通过 StyleCollection 索引器.

表格样式与段落或字符样式有何不同?

TableStyle 是 Style 的子类,添加了表格布局属性(Alignment、CellSpacing、padding)以及用于区域特定格式的 ConditionalStyles 集合,例如交错行、标题行和角单元格——这些格式概念不适用于段落或字符样式。

我可以创建全新的样式,而不是修改已有的样式吗?

是的——调用 StyleCollection.Add(type, name),传入所需的 StyleType 和新的名称来创建空样式,然后为其设置格式属性(Font、ParagraphFormat,以及段落/字符样式的其他属性)。

我如何复制一个样式,包括来自其他文档的样式?

使用 StyleCollection.AddCopy(style),传入一个 Style 对象(该对象可以来自另一个 Document 的 StyleCollection),将其副本添加到目标集合中。


API Reference 概要

类/方法描述
Style单个内置或用户定义的段落、字符、表格或列表样式
StyleCollection文档中所有样式的集合,可通过 Document.Styles 访问
StyleCollection 按名称索引器通过显示名称查找样式,例如 styles["Heading 1"]
StyleCollection 按标识符索引器通过与语言无关的标识符查找内置样式,例如 styles[StyleIdentifier.Heading1]
StyleCollection.Add(type, name)创建一个给定 StyleType 的新空样式
StyleCollection.AddCopy(style)将现有样式复制到此集合中
StyleType用于区分 Paragraph、Character、Table 和 List 样式的枚举
StyleIdentifier内置样式的区域无关标识符
TableStyle用于表格格式化的 Style 子类,包括按区域的条件样式
ConditionalStyleCollection在 TableStyle 上的每个区域的 ConditionalStyle 条目集合
ConditionalStyle对单个表格区域的格式设置(字体、段落格式、底纹、边框、填充)
ConditionalStyleType枚举,用于标识 ConditionalStyle 所适用的表格区域

另请参阅

 中文