如何在 Word 文档页眉中插入公式?

How could I insert a formula in a Word document header?

我正在尝试以编程方式在我的 Word 文档中添加 formula/expression。在我的场景中,我需要将页数减去 1。如果您尝试在文档本身中执行此操作,它应该如下所示:

{={NUMPAGES \*MERGEFORMAT }-1}

现在我正在尝试通过代码来实现它,但我正在努力......我已经尝试这样做了:

RangeWord.Fields.Add(this.Range, Interop.WdFieldType.wdFieldExpression, "{NUMPAGES \*MERGEFORMAT }-1", true)

但在那种情况下 {NUMPAGES \*MERGEFORMAT} 不能用作字段,而是用作纯文本。我怎样才能实现我想要的?我应该为 {NUMPAGES \*MERGEFORMAT} 添加一个新字段吗?

我认为这种方式行不通。在代码中输入大括号在任何情况下都不起作用。 然而,这应该可以很好地解决问题:

doc.Variables.Add("myNumPages", doc.ComputeStatistics(Interop.WdStatistic.wdStatisticPages) - 1);
RangeWord.Fields.Add(this.Range, Interop.WdFieldType.wdFieldDocVariable, "myNumPages");

.

Edit/AddIt: 还有另一种方法,优点是可以更新动态字段:

  1. 在某处插入一个正常的 {NUMPAGES} 字段并给它一个白色字体或将其隐藏
  2. Select字段,添加书签"numpages"覆盖整个字段
  3. 现在用公式 =numpages-1
  4. 添加一个 Formula 字段

示例:

var hidField = RangeWord.Fields.Add(this.Range, Interop.WdFieldType.wdFieldExpression, "NUMPAGES");
hidField.Result.Bookmarks.Add("numpages");
hidField.Result.Font.Hidden = 1;
RangeWord.Fields.Add(this.Range, Interop.WdFieldType.wdFieldFormula, "numpages-1");

您可能需要尝试使用范围变量,以免覆盖您的隐藏字段。