如何在 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: 还有另一种方法,优点是可以更新动态字段:
- 在某处插入一个正常的
{NUMPAGES}
字段并给它一个白色字体或将其隐藏
- Select字段,添加书签"numpages"覆盖整个字段
- 现在用公式
=numpages-1
添加一个 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");
您可能需要尝试使用范围变量,以免覆盖您的隐藏字段。
我正在尝试以编程方式在我的 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: 还有另一种方法,优点是可以更新动态字段:
- 在某处插入一个正常的
{NUMPAGES}
字段并给它一个白色字体或将其隐藏 - Select字段,添加书签"numpages"覆盖整个字段
- 现在用公式
=numpages-1
添加一个 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");
您可能需要尝试使用范围变量,以免覆盖您的隐藏字段。