Word加载项自定义文档属性无法保存问题求助
问题原因&解决办法
为啥只改自定义属性保存不了?
这是Word的文档状态检测逻辑搞的鬼:当你只修改自定义文档属性这类元数据时,Word不会把文档标记成「已修改」状态。这时候你调用document.Save(),Word会觉得"文档内容没变化啊",直接跳过实际的磁盘写入操作,你的属性修改自然就没被存下来。
而加空格的操作改变了文档内容,Word就会标记文档为已修改,保存时就会把内容和元数据一起写到文件里了。
不用改文档内容的解决办法
你可以手动把文档的Saved属性设为false,强制Word认为文档已经被修改,这样保存的时候就会把自定义属性的变更一起写进去:
private void button_Click(object sender, IRibbonControl control, bool pressed) { Word.Document document = WordApp.ActiveDocument; Microsoft.Office.Core.DocumentProperties properties; properties = (Microsoft.Office.Core.DocumentProperties)document.CustomDocumentProperties; properties["abc"].Value = "newValue"; // 标记文档为已修改,触发完整保存流程 document.Saved = false; document.Save(); }
另外还有一种方式,用SaveAs2方法指定原路径保存,这种方式会强制写入所有内容和元数据,不过要注意处理文件覆盖的提示(如果Word开启了相关提示的话):
private void button_Click(object sender, IRibbonControl control, bool pressed) { Word.Document document = WordApp.ActiveDocument; Microsoft.Office.Core.DocumentProperties properties; properties = (Microsoft.Office.Core.DocumentProperties)document.CustomDocumentProperties; properties["abc"].Value = "newValue"; // 强制用原路径保存,确保元数据被写入 string originalFilePath = document.FullName; document.SaveAs2(originalFilePath); }
内容的提问来源于stack exchange,提问作者Amar Malik
相关产品推荐
相关产品推荐

