c# - 如何在 Word 文档标题中插入公式?
问题描述
我正在尝试以编程方式在我的 Word 文档中添加公式/表达式。在我的场景中,我需要将页数减去 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}
字段并给它一个白色字体或使其隐藏 - 选择字段,添加一个书签“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");
您可能不得不使用范围变量,以免覆盖您的隐藏字段。
推荐阅读
- r - 使用 R 对数据子集和完整数据执行功能
- awk - 从 linux 终端使用 grep/awk/sed 命令从文件中读取值
- node.js - Feathers 客户端不接收来自服务器的 websocket 事件
- pytorch - 如何将连续整数值合并到 PyTorch 中的间隔中?
- java - 从 guice 私有模块中公开地图
- java - 如何使用 Java 类在 Jython 中设置 HTTPS 身份验证标头
- python - 如何单击带有请求的按钮(python)
- iframe - 有没有办法在 iframe 中导航而不在父寡妇中添加历史记录
- ios - 我的 iOS 应用中的 AdMob 横幅广告是否会中断其他应用的背景音频?
- google-apps-script - 删除用于将选项从工作表复制到表单的重复项