如何使用OpenXML和C#更新所有字段(交叉引用)?

3
在Word中有一个选项“更新域”。 我想加载一个Word模板,并用一些数据填充表单字段。 还有一些字段是引用其他字段的。 使用Interop,我可以简单地编写“UpdateAllFields”,但在OpenXML中等价于什么? 谢谢 :)

你是在询问Open XML还是Open XML SDK?请注意,有一种方法可以标记文档,以便Word强制进行字段更新并询问用户(出于安全原因)。但是在直接使用Open XML时,无法强制进行字段更新。字段更新需要使用Word应用程序(或SharePoint上的Word自动化服务)。 - Cindy Meister
我正在询问Open XML SDK。那个文档标记是如何工作的? - D.Weder
1个回答

6
你想使用Open XML SDK更新字段,对吧?这里有一些示例代码:
using (WordprocessingDocument document = WordprocessingDocument.Open(path, true))
{
  DocumentSettingsPart settingsPart = document.MainDocumentPart.GetPartsOfType<DocumentSettingsPart>().First();
  // Create object to update fields on open
  UpdateFieldsOnOpen updateFields = new UpdateFieldsOnOpen();
  updateFields.Val = new DocumentFormat.OpenXml.OnOffValue(true);
  // Insert object into settings part.
  settingsPart.Settings.PrependChild<UpdateFieldsOnOpen>(updateFields);
  settingsPart.Settings.Save();
}

欲了解更多信息,请参考以下链接:

OpenXML:如何在打开文档时刷新字段


此网址现在是404错误。 :-( - james.garriss
1
也许这个链接和这个一样?http://www.samuraiprogrammer.com/blog/2010/08/09/OpenXMLHowToRefreshAFieldWhenTheDocumentIsOpened.aspx - james.garriss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接