更新欄位
典型的,在 Microsoft Word 中插入的欄位已經包含最新的值。 例如,如果欄位是公式或頁碼,則會包含當前版本文件的正確計算值。 但是,如果您有一個應用程式,它會產生或修改包含像合併兩份文件或填入資料等欄位的一份文件,那麼在文書有用之前,所有欄位都必須更新。
如何更新欄位
當一份文件載入時,Aspose.Words 模擬 Microsoft Word 的動作,而自動更新欄位的選項已關。 這個行為可以概括如下:
“-當你打開/儲存一個文件,欄位保持不變”
“- 您可以明顯更新文件中的所有欄位,例如當您需要時,重建 TOC
。”
當您列印/轉載為 PDF 或 XPS 時,標題/腳部中的頁碼相關欄位會更新
- 当你執行 Mail Merge 時,所有欄位會自動更新
以程式方式更新欄位
若要更新整個文件中的欄位,請簡單地呼叫 UpdateFields 方法。 要更新部分文件中包含的欄位,請取得一個 Range 物件並呼叫 UpdateFields 方法。 在 Aspose.Words 中,您可以透過 Node.Range 屬性使用 Range 在文件樹中獲取任何節點,例如 Section、HeaderFooter 和 Paragraph。 您可透過調用 Update 方法更新單個欄位的結果。
在渲染期間自動更新頁面相關欄位
當您執行將文件轉換為固定頁面格式(例如PDF或 XPS)的操作時,然後 Aspose.Words 會自動更新文件頭/尾中的 PAGE
和 PAGEREF
相關字段。 此動作模擬在列印文件時 Microsoft Word 的動作。
如果您要更新文件中其他所有欄位,那您必須在渲染該文件之前先呼叫 UpdateFields。
以下範例示範了如何在 렌더링 문서之前更新所有欄位:
自動更新欄位期間 Mail Merge
當你執行一個 mail merge,文件中的所有欄位都會自動更新。 這是因為mail merge是一個場更新案例。 該程式遇到一個 Mail Merge 欄位,並需要更新其結果,這涉及到從資料源取得值並將其插入至該欄位中。 當然,逻辑更複雜,例如,當文件/区域mail merge的末尾被达到而还有需要合并的数据时,这个区域需要被复制,新的字段集被更新。
更新有汙汚屬性的欄位
w:dirty是一個欄位層次的屬性,當該文件打開時,僅會更新您指定的欄位。 它會告訴微軟字元,下次打開這個文件時只更新這個欄位。 您可以使用 UpdateDirtyFields 屬性來指定是否要更新具有 dirty 屬性的欄位。 當 UpdateDirtyFields 的值設定為 true 時,在文件載入時所有具有 true 值的 Field.IsDirty 或 FieldChar.IsDirty 屬性的欄位會更新。
以下代碼示例展示了如何更新具有dirty屬性的字段:
在儲存之前更新LastSavedTime屬性。
您可以在儲存文件時,利用 UpdateLastSavedTimeProperty 屬性來更新對應的內建文件屬性 LastSavedTime。
下面的程式碼範例示範如何更新此屬性: