我正在尝试以编程方式在我的Word文档中添加公式/表达式。在我的场景中,我需要将页数减为1。如果您尝试在文档本身中进行打印,则应如下所示:
{={NUMPAGES \*MERGEFORMAT }-1}
现在,我正在尝试通过挣扎的代码来实现它……我试图做到这一点:
RangeWord.Fields.Add(this.Range, Interop.WdFieldType.wdFieldExpression, "{NUMPAGES \*MERGEFORMAT }-1", true)
但是在这种情况下,{NUMPAGES \*MERGEFORMAT}
不能用作字段,而可以用作纯文本。我怎样才能实现自己想要的?我应该为{NUMPAGES \*MERGEFORMAT}
添加一个新字段吗?
答案 0 :(得分:1)
我认为这样不会起作用。在代码中输入花括号根本不起作用。 但是,这应该可以解决问题:
doc.Variables.Add("myNumPages", doc.ComputeStatistics(Interop.WdStatistic.wdStatisticPages) - 1);
RangeWord.Fields.Add(this.Range, Interop.WdFieldType.wdFieldDocVariable, "myNumPages");
。
编辑/添加:还有另一种方法,其优点是拥有一个可以更新的动态字段:
{NUMPAGES}
字段,并为其设置白色字体或将其隐藏起来=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");
您可能必须使用range变量,以免覆盖隐藏字段。