【问题标题】:How could I insert a formula in a Word document header?如何在 Word 文档标题中插入公式?
【发布时间】:2019-03-22 09:44:08
【问题描述】:

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

{={NUMPAGES \*MERGEFORMAT }-1}

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

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

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

【问题讨论】:

    标签: c# ms-word interop


    【解决方案1】:

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

    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. 现在添加一个 Formula 字段,其中包含公式 =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");
    

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

    【讨论】:

    • 我知道下一个问题可能看起来跑题了,但这是我需要知道的……Variables 引用了吗?我的意思是如果我决定更改我的“myNumPages”变量(如果可以的话),它会更新包含该变量的所有字段吗?
    • 您必须重新计算变量。我刚刚尝试添加几页,然后更新该字段 - 没有变化。即您必须将值重新分配给变量,因为它是静态的。
    • @JuanCarlosRodriguez 我已经修改了代码。第二个版本应该适合你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 2021-11-25
    • 2017-11-22
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    相关资源
    最近更新 更多