代码之家  ›  专栏  ›  技术社区  ›  Jordan Lewallen

如何使用Microsoft Word互操作书签C选中复选框#

  •  0
  • Jordan Lewallen  · 技术社区  · 6 年前

    我正在尝试使用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”这样的书签并将其值标记为“checked”?

    谢谢你的帮助!

    1 回复  |  直到 6 年前
        1
  •  0
  •   Cindy Meister    6 年前

    在处理表单域时,最好处理表单域对象,而不是书签名称。书签名称用作 FormFields

    例如:

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