2010-06-26 103 views
4

我有一个使用OpenXML SDK生成Word文档的库,该库的功能之一是在最后一行(例如SUM(ABOVE))上生成具有公式的表格。生成Open XML Word文档后自动更新公式字段

Word具有内置的这些功能,但在生成文档时,我必须假定Word未安装在机器上。

问题是如果我只是生成表格和公式字段,它将不会在打开文档时自动更新,用户将不得不打开文档并手动为函数选择“更新字段”进行计算。

有没有办法在代码中做到这一点(无需手动计算功能)?

回答

5

不,这是设计。详情请参阅Which fields are updated when you open, repaginate, or print document。 (例如,如果您在A1中有10个,在A2中有10个,在A3中插入=SUM(ABOVE),则会有20个。但是如果您将A1更改为15,则A3不会自动更新除非你手动这样做)。

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

+0

这就是我认为,我唯一的问题是,我不能假设用户有Word安装在机器上,因此我将不得不坚持手动计算(幸运的是数字的功能是有限的)。谢谢! – willvv 2010-06-26 12:21:33

2

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

我想这是有它的Dirty标志设置为true各领域将得到更新,但不可以引用我这句话;)