我正在尝试使用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”之类的书签并将其值标记为“已选中”?
感谢您的帮助!
答案 0 :(得分:0)
使用表单域时,最好寻址表单域对象而不是书签名称。书签名称用作FormFields
集合的索引值。
例如:
object bookmark1 = "bkm1";
object bookmark2 = "bkm2";
wordDoc.FormFields[ref bookmark1].Result = "Text in textbox";
wordDoc.FormFields[ref bookmark2].CheckBox.Value = true;