首页 > 解决方案 > 如何以编程方式更新 Word 字段?

问题描述

我有一个带有字段的word文档:https ://www.avantixlearning.ca/microsoft-word/word-tip-create-dynamic-word-documents-insert-fields/

有许多字段需要更新,通过 Word GUI 更新它们很繁琐。

我正在查看Word.Interop,它看起来不像 Word.Fields 支持更改字段的值(或一种识别索引以外的字段或检查结果的方法)

我可以尝试另一种方法吗?

标签: c#interop

解决方案


要访问Fields当前文档的集合,您可以使用ActiveDocument.FieldsActiveDocument.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();
        }
    }
}

推荐阅读