【问题标题】:Automatically update formula field after generating Open XML Word document生成 Open XML Word 文档后自动更新公式字段
【发布时间】:2010-06-26 02:00:49
【问题描述】:

我有一个使用 OpenXML SDK 生成 Word 文档的库,该库的功能之一是在最后一行生成带有公式的表格(例如 SUM(ABOVE))。

Word 内置了这些功能,但是在生成文档时,我必须假设机器上没有安装 Word。

问题是,如果我只是生成表格和公式字段,打开文档时不会自动更新,用户必须打开文档并手动选择“更新字段”的功能进行计算。

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

【问题讨论】:

    标签: c# ms-word openxml formulas


    【解决方案1】:

    不,这是设计使然。详情请见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 事件并运行一些代码来更新所有字段或在服务器上创建一个互操作应用程序打开文档,用一些代码呈现它,然后在进一步发送之前将其保存回来。

    【讨论】:

    • 这就是我的想法,我唯一的问题是我不能假设用户在机器上安装了 Word,因此我必须坚持手动计算(幸运的是函数的数量是有限的)。谢谢!
    【解决方案2】:

    你看到了吗,UpdateFieldsOnOpen 班级。 (https://msdn.microsoft.com/en-us/library/cc861799) 首次使用可更新文档的应用(例如 Word)打开文档时,它应该强制更新所有字段。

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

    【讨论】:

      【解决方案3】:

      您可以设置值UpdateFieldsOnOpen,打开文档时Word会询问您要刷新的内容。更多详情请看这篇文章:http://www.samuraiprogrammer.com/blog/2010/08/09/OpenXMLHowToRefreshAFieldWhenTheDocumentIsOpened.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多