【发布时间】:2016-05-02 06:30:02
【问题描述】:
我正在尝试通过 Open XML 编程更新 word 文档的自定义属性,但似乎更新后的属性没有为 word 文档正确保存。因此,当我在成功执行更新自定义属性代码后打开文档时,我收到消息框“此文档包含可能引用其他文件的字段;您要更新文档中的字段吗?”如果我按下“否”按钮,则所有更新属性都不会保存到文档中。如果我们选择 yes 选项,那么它将更新属性,但我需要明确保存属性。请建议将属性保存到文档中,而不会收到确认消息或损坏文档。 :)
代码sn-p如下,
public void SetCustomValue(
WordprocessingDocument document, string propname, string aValue)
{
CustomFilePropertiesPart oDocCustomProps = document.CustomFilePropertiesPart;
Properties props = oDocCustomProps.Properties;
if (props != null)
{
//logger.Debug("props is not null");
foreach (var prop in props.Elements<CustomDocumentProperty>())
{
if (prop != null && prop.Name == propname)
{
//logger.Debug("Setting Property: " + prop.Name + " to value: " + aValue);
prop.Remove();
var newProp = new CustomDocumentProperty();
newProp.FormatId = "{D5CDD505-2E9C-101B-9397-08002B2CF9AE}";
newProp.Name = prop.Name;
VTLPWSTR vTLPWSTR1 = new VTLPWSTR();
vTLPWSTR1.Text = aValue;
newProp.Append(vTLPWSTR1);
props.AppendChild(newProp);
props.Save();
}
}
int pid = 2;
foreach (CustomDocumentProperty item in props)
{
item.PropertyId = pid++;
}
props.Save();
}
}
我正在使用带有 Open XML SDK 2.0 和 Office 2013 的 .Net framework 3.5。
【问题讨论】:
标签: c#-3.0 office-interop openxml-sdk