如何使用Microsoft Word Interop书签C#

时间:2018-08-15 19:56:12

标签: c# ms-word office-interop

我正在尝试使用C#的Microsoft Word Interop修改带有表单域和复选框的文档。我已经成功使用以下代码成功更新了表单字段,但是我不知道如何将复选框标记为“已选中”

我创建了需要更新的表单项列表,每个表单项都有一个BookmarkTag和相应的数据字符串:

string filename = @"C:\Users\...docx"; //removed for brevity

Application wordApp = null;
wordApp = new Application();
wordApp.Visible = false;
Document wordDoc = wordApp.Documents.Add(filename);

List<FormItem> formItems = new List<FormItem>
    {
        new FormItem { BookmarkTag = "author", Data = doc.Author.DisplayName },
        new FormItem { BookmarkTag = "phonenumber", Data = doc.Author.PhoneNumber },
    };

foreach(var formItem in formItems)
{
    if (!String.IsNullOrWhiteSpace(formItem.Data))
    {
        Bookmark bookmark = wordDoc.Bookmarks[formItem.BookmarkTag];
        bookmark.Select();
        wordApp.Selection.TypeText(formItem.Data);
    }
}

显然,这仅适用于文本项,但是如何识别“ checkbox1”之类的书签并将其值标记为“已选中”?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

使用表单域时,最好寻址表单域对象而不是书签名称。书签名称用作FormFields集合的索引值。

例如:

object bookmark1 = "bkm1";
object bookmark2 = "bkm2";
wordDoc.FormFields[ref bookmark1].Result = "Text in textbox";
wordDoc.FormFields[ref bookmark2].CheckBox.Value = true;