更新字段

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

如何更新字段

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

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

以编程方式更新字段

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

渲染过程中自动更新页面相关字段

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

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

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

Mail Merge期间自动字段更新

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

更新具有脏属性的字段

W:dirty是一个字段级属性,它将在打开文档时仅刷新您指定的字段。 它告诉MSWord仅在下次打开文档时刷新此字段。 您可以使用LoadOptions。setUpdateDirtyFields()属性,用于指定是否使用dirty属性更新字段。 LoadOptions的值时。setUpdateDirtyFields()设置为true,所有具有Field.IsDirtyFieldChar.IsDirty属性的true值的字段都会在文档加载时更新。

下面的代码示例演示如何更新具有dirty属性的字段:

保存前更新LastSavedTime属性

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

下面的代码示例演示如何更新此属性: