2010-06-26 69 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各領域將得到更新,但不可以引用我這句話;)