生成Open XML Word文档后自动更新公式字段

我有一个使用OpenXML SDK生成Word文档的库,该库的一个function是生成最后一行包含公式的表(例如SUM(ABOVE) )。

Word具有内置的这些function,但在生成文档时,我必须假设Word未安装在计算机上。

问题是,如果我只生成表和公式字段,则在打开文档时不会自动更新,用户必须打开文档并手动为要计算的函数选择“更新字段”。

有没有办法在代码中执行此操作(无需手动计算function)?

不,这是设计的。 有关详细信息,请参阅打开,重新打印或打印文档时更新的字段 。

对于任何手动输入也是如此(例如,如果您在A1中有10个,在A2中有10个,在A3中插入=SUM(ABOVE) ,则您有20个。但是如果您将A1更改为15,则A3将不会自动更新除非并且直到你手动这样做)。

解决此问题的唯一方法是创建一个加载项(VSTO,VBA等)以在客户端计算机上接收Document_Open事件并运行一些代码来更新所有字段或在打开文档的服务器上创建Interop应用程序,呈现它带有一些代码,然后在进一步发送之前将其保存回来。

你看过这个, UpdateFieldsOnOpen类。 ( https://msdn.microsoft.com/en-us/library/cc861799 )它应该在第一次使用可以更新它的应用程序(例如Word)打开文档时强制更新所有字段。

我猜每个将其Dirty标志设置为true的字段都会得到更新,但不要引用我的内容;)

您可以设置值UpdateFieldsOnOpen ,打开文档Word时会询问您要刷新的内容。 有关更多详细信息,请参阅此文章: http : //www.samuraiprogrammer.com/blog/2010/08/09/OpenXMLHowToRefreshAFieldWhenTheDocumentIsOpened.aspx