首页 > 解决方案 > 如何在 Word 文档标题中插入公式?

问题描述

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

{={NUMPAGES \*MERGEFORMAT }-1}

现在我正在尝试通过代码来做到这一点,我正在苦苦挣扎......我已经尝试过这样做:

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

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

标签: c#ms-wordinterop

解决方案


我不认为它会以这种方式工作。在代码中输入大括号不起作用。但是,这应该可以解决问题:

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

.

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

  1. 在某处插入一个普通{NUMPAGES}字段并给它一个白色字体或使其隐藏
  2. 选择字段,添加一个书签“numpages”覆盖整个字段
  3. 现在用公式添加一个公式字段=numpages-1

例子:

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

您可能不得不使用范围变量,以免覆盖您的隐藏字段。


推荐阅读