我有一個使用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