更新字段

通常,插入 Microsoft Word 中的字段已包含最新值。例如,如果该字段是公式或页码,它将包含给定文档版本的正确计算值。但是,如果您有一个应用程序生成或修改带有字段的文档,例如合并两个文档或用数据填充文档,那么理想情况下,必须更新所有字段才能使文档有用。

如何更新字段

加载文档时,Aspose.Words 会模仿 Microsoft Word 的行为,并关闭自动更新字段的选项。该行为可以总结如下:

  • 当您打开/保存文档时,字段保持不变
  • 您可以在需要时显式更新文档中的所有字段,例如重建 TOC
  • 当您打印/渲染为 PDF 或 XPS 时,页眉/页脚中与页码相关的字段会更新
  • 当您执行 mail merge 时,所有字段都会自动更新

以编程方式更新字段

要显式更新整个文档中的字段,只需调用 UpdateFields 方法即可。要更新部分文档中包含的字段,请获取 Range 对象并调用 UpdateFields 方法。在 Aspose.Words 中,您可以使用 Node.Range 属性获取文档树中任何节点的 Range,例如 SectionHeaderFooterParagraph 等。您可以通过调用Update方法更新单个字段的结果。

渲染期间自动更新页面相关字段

当您将文档转换为固定页面格式(例如 PDF 或 XPS)时,Aspose.Words 将自动更新文档页眉/页脚中与页面布局相关的 PAGEPAGEREF 字段。此行为模仿打印文档时 Microsoft Word 的行为。

如果要更新文档中的所有其他字段,则需要在渲染文档之前调用 UpdateFields

以下代码示例演示如何在呈现文档之前更新所有字段:

Mail Merge 期间自动字段更新

当您执行 mail merge 时,文档中的所有字段都会自动更新。这是因为 mail merge 是字段更新的情况。程序遇到 mail merge 字段并需要更新其结果,这涉及从数据源获取值并将其插入到该字段中。逻辑当然更复杂,例如,当到达文档/mail merge区域的末尾但仍有进一步的数据需要合并时,则需要复制该区域并更新新的字段集。

更新具有脏属性的字段

w:dirty 是一个字段级属性,打开文档时只会刷新您指定的字段。它告诉 MS Word 仅在下次打开文档时刷新此字段。您可以使用 UpdateDirtyFields 属性来指定是否更新具有 dirty 属性的字段。当 UpdateDirtyFields 的值设置为 true 时,所有具有 Field.IsDirtyFieldChar.IsDirty 属性的 true 值的字段都会在文档加载时更新。

以下代码示例展示了如何更新具有 dirty 属性的字段:

保存前更新 LastSavedTime 属性

您可以使用 UpdateLastSavedTimeProperty 属性在保存文档时是否更新相应的内置文档属性 LastSavedTime

以下代码示例展示了如何更新此属性: