c# - 如何以编程方式更新 Word 字段?
问题描述
我有一个带有字段的word文档:https ://www.avantixlearning.ca/microsoft-word/word-tip-create-dynamic-word-documents-insert-fields/
有许多字段需要更新,通过 Word GUI 更新它们很繁琐。
我正在查看Word.Interop,它看起来不像 Word.Fields 支持更改字段的值(或一种识别索引以外的字段或检查结果的方法)
我可以尝试另一种方法吗?
解决方案
要访问Fields
当前文档的集合,您可以使用ActiveDocument.Fields或ActiveDocument.Variables。如果要访问非活动文档,则必须创建或打开Document
代表它的对象。
大多数Word
Field
对象不需要也不能根据它们的值进行更改。变量可以在文档文本中作为DOCVARIABLE
字段引用。
下面展示了这在实践中是如何工作的:
using Word = Microsoft.Office.Interop.Word;
namespace akWordFieldDemo
{
class Program
{
static void Main(string[] args)
{
// start Word application
var oWord = new Word.Application
{
Visible = true
};
// create new document
var oDoc = oWord.Documents.Add();
// add a DOCVARIABLE field
Word.Paragraph para = oDoc.Paragraphs.Add();
object fieldType = Word.WdFieldType.wdFieldEmpty;
object text = "DOCVARIABLE myVar";
object preserveFormatting = true;
var field = oDoc.Fields.Add(para.Range, ref fieldType, ref text, ref preserveFormatting);
// set the value of the DOCVARIABLE
oDoc.Variables["myVar"].Value = "some value";
oDoc.Fields.Update();
oDoc.SaveAs2("myDoc.docx");
oDoc.Close();
oWord.Quit();
}
}
}
推荐阅读
- xml - cvc-elt.1.a:找不到元素“ScrubAddress”的声明
- java - Android Studio中Java中的冗余字符串格式
- .net-core - 了解 Blazor 托管
- python - 如何合并两个用字符串填充的熊猫数据框?
- javascript - 获取 api 并传递
- mysql - 在 MySql 中表现为文本的长文本
- java - 如何访问另一个类中的特定枚举值?
- ios - 在 IOS 上的 Nativescript 中本地存储和加载图像时遇到问题
- c# - 在 VBA 中,C# dll 说没有入口点
- r - auto.arima() 似乎在给定相同数据的情况下选择不同的模型