不通过openXML更新单词的自定义属性

时间:2016-05-02 06:30:02

标签: c#-3.0 office-interop openxml-sdk

我正在尝试通过Open XML编程更新word文档的自定义属性,但似乎没有为word文档正确保存更新的属性。因此,当我成功执行更新自定义属性代码后打开文档时,我收到的消息框是"此文档包含可能引用其他文件的字段;是否要更新文档中的字段?"如果我要按“不”。按钮然后所有更新属性都不会保存到文档中。如果我们要使用yes选项,那么它将更新属性,但我需要显式保存属性。请建议在不收到确认消息或损坏文档的情况下将属性保存到文档中。 :)

代码段如下,

vagrant halt

我正在使用.Net framework 3.5与Open XML SDK 2.0和Office 2013。

1 个答案:

答案 0 :(得分:0)

试试这个

        var CustomeProperties = xmlDOc.CustomFilePropertiesPart.Properties;

        foreach (CustomDocumentProperty customeProperty in CustomeProperties)
        {
            if (customeProperty.Name == "DocumentName")
            {
                customeProperty.VTLPWSTR = new VTLPWSTR("My Custom Name");
            }
            else if (customeProperty.Name == "DocumentID")
            {
                customeProperty.VTLPWSTR = new VTLPWSTR("FNP.SMS.IQC");
            }
            else if (customeProperty.Name == "DocumentLastUpdate")
            {
                customeProperty.VTLPWSTR = new VTLPWSTR(DateTime.Now.ToShortDateString());
            }
        }

        //Open Word Setting File
        DocumentSettingsPart settingsPart = xmlDOc.MainDocumentPart.GetPartsOfType<DocumentSettingsPart>().First();
        //Update Fields
        UpdateFieldsOnOpen updateFields = new UpdateFieldsOnOpen();
        updateFields.Val = new OnOffValue(true);

        settingsPart.Settings.PrependChild<UpdateFieldsOnOpen>(updateFields);
        settingsPart.Settings.Save();

您必须在打开时更新文档字段。