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);

也可以看看