我有一个使用 OpenXML SDK 生成 Word 文档的库,该库的功能之一是在最后一行生成带有公式的表格(例如SUM(ABOVE)
)。
Word 内置了这些功能,但是在生成文档时,我必须假设机器上没有安装 Word。
问题是如果我只生成表格和公式字段,打开文档时不会自动更新,用户必须打开文档并手动选择“更新字段”才能计算函数。
有没有办法在代码中做到这一点(无需手动计算函数)?
不,这是设计使然。有关详细信息,请参阅打开、重新分页或打印文档时更新哪些字段。
任何手动输入也是如此(例如,如果您在 A1 中有 10 个,在 A2 中有 10 个,=SUM(ABOVE)
在 A3 中插入,您将有 20 个。但是如果您将 A1 更改为 15,除非您手动输入,否则 A3 不会自动更新这样做了)。
解决此问题的唯一方法是创建一个加载项(VSTO、VBA 等)以Document_Open
在客户端计算机上接收事件并运行一些代码以更新所有字段或在打开文档的服务器上创建一个互操作应用程序,呈现它使用一些代码,然后在进一步发送之前将其保存回来。
UpdateFieldsOnOpen
同学们,你们看到了吗?(https://msdn.microsoft.com/en-us/library/cc861799)它应该在第一次使用可以更新它的应用程序(例如 Word)打开文档时强制更新所有字段。
我想每个将其Dirty
标志设置为 true 的字段都会得到更新,但不要引用我的话;)
您可以设置该值UpdateFieldsOnOpen
,打开文档时 Word 会询问您要刷新的内容。有关详细信息,请参阅本文:http: //www.samuraiprogrammer.com/blog/2010/08/09/OpenXMLHowToRefreshAFieldWhenTheDocumentIsOpened.aspx