我有一个使用OpenXML SDK生成Word文档的库,该库的功能之一是在最后一行(例如SUM(ABOVE)
)上生成具有公式的表格。生成Open XML Word文档后自动更新公式字段
Word具有内置的这些功能,但在生成文档时,我必须假定Word未安装在机器上。
问题是如果我只是生成表格和公式字段,它将不会在打开文档时自动更新,用户将不得不打开文档并手动为函数选择“更新字段”进行计算。
有没有办法在代码中做到这一点(无需手动计算功能)?
我有一个使用OpenXML SDK生成Word文档的库,该库的功能之一是在最后一行(例如SUM(ABOVE)
)上生成具有公式的表格。生成Open XML Word文档后自动更新公式字段
Word具有内置的这些功能,但在生成文档时,我必须假定Word未安装在机器上。
问题是如果我只是生成表格和公式字段,它将不会在打开文档时自动更新,用户将不得不打开文档并手动为函数选择“更新字段”进行计算。
有没有办法在代码中做到这一点(无需手动计算功能)?
不,这是设计。详情请参阅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应用程序该文档使用一些代码呈现它,然后在进一步发送之前将其保存。
你见过这个,UpdateFieldsOnOpen
班。 (https://msdn.microsoft.com/en-us/library/cc861799)它应该在首次使用可更新文档的应用程序(如Word)打开文档时强制更新所有字段。
我想这是有它的Dirty
标志设置为true各领域将得到更新,但不可以引用我这句话;)
您可以设置值UpdateFieldsOnOpen
,打开文档时,Word将询问你想要刷新什么。看到这篇文章的更多细节:http://www.samuraiprogrammer.com/blog/2010/08/09/OpenXMLHowToRefreshAFieldWhenTheDocumentIsOpened.aspx
这就是我认为,我唯一的问题是,我不能假设用户有Word安装在机器上,因此我将不得不坚持手动计算(幸运的是数字的功能是有限的)。谢谢! – willvv 2010-06-26 12:21:33