如何使用 Microsoft Word 互操作书签 C# 选中一个框
How to check a box using Microsoft Word Interop Bookmarks C#
我正在尝试使用 C# 的 Microsoft Word Interop 修改包含表单域和复选框的文档。我已经成功地使用以下代码更新了表单字段,但我不知道如何将复选框标记为 "checked"
我在表单中创建了一个需要更新的项目列表,每个表单项目都有一个 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"?
感谢您的帮助!
在处理表单域时,最好处理表单域对象而不是书签名称。书签名称用作 FormFields
集合的索引值。
例如:
object bookmark1 = "bkm1";
object bookmark2 = "bkm2";
wordDoc.FormFields[ref bookmark1].Result = "Text in textbox";
wordDoc.FormFields[ref bookmark2].CheckBox.Value = true;
我正在尝试使用 C# 的 Microsoft Word Interop 修改包含表单域和复选框的文档。我已经成功地使用以下代码更新了表单字段,但我不知道如何将复选框标记为 "checked"
我在表单中创建了一个需要更新的项目列表,每个表单项目都有一个 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"?
感谢您的帮助!
在处理表单域时,最好处理表单域对象而不是书签名称。书签名称用作 FormFields
集合的索引值。
例如:
object bookmark1 = "bkm1";
object bookmark2 = "bkm2";
wordDoc.FormFields[ref bookmark1].Result = "Text in textbox";
wordDoc.FormFields[ref bookmark2].CheckBox.Value = true;