使用VBA或者VSTO从存储在SharePoint中的Word文档读取/写入Person元数据?
时间:2020-03-05 18:47:54 来源:igfitidea点击:
方案:SharePoint中的文档库,其列x为"人员或者组"类型。从VBA宏(或者VSTO加载项)中,我们尝试访问文档上的MetaProperty,以设置/获取用户名。任何通过ContentTypeProperties集合访问该值的尝试都会抛出一个
Type MisMatch error (13).
MetaProperty对象的Type属性表示它为" msoMetaPropertyTypeUser"。我找不到有关如何使用此类型的MetaProperty的任何示例。有人对此有经验吗?
谢谢!
解决方案
回答
我们应该能够执行以下操作:
using (SPSite site = new SPSite("http://yoursite/subsite")) { using (SPWeb web = site.OpenWeb()) { SPList list = web.Lists["DocLibraryName"]; SPListItemCollection items = list.GetItems(list.Views["All Documents"]); foreach (SPListItem item in items) { item["Modified By"] = "Updated Value"; } } }
通过索引SPListItem的列名,文档的任何元数据都应该可用。
回答
我做到了。
实际上,这里的技巧是要知道,如果在Word文档的custom属性中将与用户索引相对应的字符串放在MOSS用户中,MOSS将识别出该字符串并找到对应的用户以映射该字段。
所以你只需要调用http:///_vti_bin/usergroup.asmx
使用函数GetUserInfo并从中检索用户索引(ID)。
MOSSusergroup.UserGroup userGroupService = new MOSSusergroup.UserGroup(); userGroupService.Credentials = System.Net.CredentialCache.DefaultCredentials; System.Xml.XmlNode node = userGroupService.GetUserInfo(userLogin); string index = node.FirstChild.Attributes["ID"].Value;