UpdateFields

Range.UpdateFields method

更新此范围内的文档字段的值。

public void UpdateFields()

评论

当您打开、修改然后保存文档时,Aspose.Words 不会自动更新字段,而是保持它们完好无损。 因此,如果您以编程方式修改了文档 并希望确保正确(计算)的字段值出现在保存的文档中,则通常需要在保存之前调用此方法。

执行邮件合并后无需更新字段,因为邮件合并是一种字段 update ,会自动更新文档中的所有字段。

此方法不会更新所有字段类型。有关受支持的字段类型的详细列表,请参阅《程序员指南》。

此方法不会更新与页面布局算法相关的字段(例如 PAGE、PAGES、PAGEREF)。 当您呈现文档或调用时,页面布局相关的字段会更新UpdatePageLayout

要更新整个文档中的字段,请使用UpdateFields

例子

显示如何更新某个范围内的所有字段。

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

builder.InsertField(" DOCPROPERTY Category");
builder.InsertBreak(BreakType.SectionBreakEvenPage);
builder.InsertField(" DOCPROPERTY Category");

// 上述 DOCPROPERTY 字段将显示此内置文档属性的值。
doc.BuiltInDocumentProperties.Category = "MyCategory";

// 如果我们更新文档属性的值,我们将需要更新所有 DOCPROPERTY 字段以显示它。
Assert.AreEqual(string.Empty, doc.Range.Fields[0].Result);
Assert.AreEqual(string.Empty, doc.Range.Fields[1].Result);

// 更新第一部分范围内的所有字段。
doc.FirstSection.Range.UpdateFields();

Assert.AreEqual("MyCategory", doc.Range.Fields[0].Result);
Assert.AreEqual(string.Empty, doc.Range.Fields[1].Result);

也可以看看