如何在Word文档标题中插入公式?

时间:2019-03-22 09:44:08

标签: c# ms-word interop

我正在尝试以编程方式在我的Word文档中添加公式/表达式。在我的场景中,我需要将页数减为1。如果您尝试在文档本身中进行打印,则应如下所示:

{={NUMPAGES \*MERGEFORMAT }-1}

现在,我正在尝试通过挣扎的代码来实现它……我试图做到这一点:

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

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

1 个答案:

答案 0 :(得分:1)

我认为这样不会起作用。在代码中输入花括号根本不起作用。 但是,这应该可以解决问题:

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

编辑/添加:还有另一种方法,其优点是拥有一个可以更新的动态字段:

  1. 在某个地方插入一个普通的{NUMPAGES}字段,并为其设置白色字体或将其隐藏起来
  2. 选择字段,添加一个覆盖整个字段的书签“ 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");

您可能必须使用range变量,以免覆盖隐藏字段。