更新字段
通常,插入 Microsoft Word 中的字段已包含最新值。例如,如果该字段是公式或页码,它将包含给定文档版本的正确计算值。但是,如果您有一个应用程序生成或修改带有字段的文档,例如合并两个文档或用数据填充文档,那么理想情况下,必须更新所有字段才能使文档有用。
如何更新字段
加载文档时,Aspose.Words 会模仿 Microsoft Word 的行为,并关闭自动更新字段的选项。该行为可以总结如下:
- 当您打开/保存文档时,字段保持不变
- 您可以在需要时显式更新文档中的所有字段,例如重建
TOC
- 当您打印/渲染为 PDF 或 XPS 时,页眉/页脚中与页码相关的字段会更新
- 当您执行 Mail Merge 时,所有字段都会自动更新
以编程方式更新字段
要显式更新整个文档中的字段,只需调用 UpdateFields 方法即可。要更新部分文档中包含的字段,请获取 Range 对象并调用 UpdateFields 方法。在 Aspose.Words 中,您可以使用 Node.Range 属性获取文档树中任何节点的 Range,例如 Section、HeaderFooter、Paragraph 等。您可以通过调用Update方法更新单个字段的结果。
渲染期间自动更新页面相关字段
当您将文档转换为固定页面格式(例如 PDF 或 XPS)时,Aspose.Words 将自动更新文档页眉/页脚中与页面布局相关的 PAGE
、PAGEREF
字段。此行为模仿打印文档时 Microsoft Word 的行为。
如果要更新文档中的所有其他字段,则需要在渲染文档之前调用 UpdateFields。
以下代码示例演示如何在呈现文档之前更新所有字段:
Mail Merge 期间自动字段更新
当您执行 Mail Merge 时,文档中的所有字段都会自动更新。这是因为 Mail Merge 是字段更新的情况。程序遇到 Mail Merge 字段并需要更新其结果,这涉及从数据源获取值并将其插入到该字段中。逻辑当然更复杂,例如,当到达文档/mail merge区域的末尾但仍有进一步的数据需要合并时,则需要复制该区域并更新新的字段集。
更新具有脏属性的字段
w:dirty 是一个字段级属性,打开文档时只会刷新您指定的字段。它告诉 MS Word 仅在下次打开文档时刷新此字段。您可以使用 UpdateDirtyFields 属性来指定是否更新具有 dirty 属性的字段。当 UpdateDirtyFields 的值设置为 true 时,所有具有 Field.IsDirty 或 FieldChar.IsDirty 属性的 true 值的字段都会在文档加载时更新。
以下代码示例展示了如何更新具有 dirty 属性的字段:
保存前更新 LastSavedTime 属性
您可以使用 UpdateLastSavedTimeProperty 属性在保存文档时是否更新相应的内置文档属性 LastSavedTime。
以下代码示例展示了如何更新此属性: