更新欄位

「典型的,在 Microsoft Word 中插入的欄位已經包含最新的值。」 「例如,如果欄位是公式或頁碼,則會包含當前版本文件的正確計算值。」 「但是,如果您有一個應用程式,它會產生或修改包含像合併兩份文件或填入資料等欄位的一份文件,那麼在文書有用之前,所有欄位都必須更新。」

「如何更新欄位」

「當一份文件載入時,Aspose.Words 模擬 Microsoft Word 的動作,而自動更新欄位的選項已關。」 「這個行為可以概括如下:」

“-當你打開/儲存一個文件,欄位保持不變” “- 您可以明顯更新文件中的所有欄位,例如當您需要時,重建 TOC。” 「當您列印/轉載為 PDF 或 XPS 時,標題/腳部中的頁碼相關欄位會更新」 「- 当你執行 mail merge 時,所有欄位會自動更新」

以程式方式更新欄位

「若要更新整個文件中的欄位,請簡單地呼叫 UpdateFields 方法。」 「要更新部分文件中包含的欄位,請取得一個 Range 物件並呼叫 UpdateFields 方法。」 在 Aspose.Words 中,您可以透過 Node.Range 屬性使用 Range 在文件樹中獲取任何節點,例如 SectionHeaderFooterParagraph。 「您可透過調用 Update 方法更新單個欄位的結果。」

在渲染期間自動更新頁面相關欄位

當您執行將文件轉換為固定頁面格式(例如PDF或 XPS)的操作時,然後 Aspose.Words 會自動更新文件頭/尾中的 PAGEPAGEREF 相關字段。 「此動作模擬在列印文件時 Microsoft Word 的動作。」

「如果您要更新文件中其他所有欄位,那您必須在渲染該文件之前先呼叫 UpdateFields。」

以下範例示範了如何在 렌더링 문서之前更新所有欄位:

自動更新欄位期間 Mail Merge

「當你執行一個 mail merge,文件中的所有欄位都會自動更新。」 「這是因為mail merge是一個場更新案例。」 「該程式遇到一個 mail merge 欄位,並需要更新其結果,這涉及到從資料源取得值並將其插入至該欄位中。」 當然,逻辑更複雜,例如,當文件/区域mail merge的末尾被达到而还有需要合并的数据时,这个区域需要被复制,新的字段集被更新。

「更新有汙汚屬性的欄位」

「w:dirty」是一個欄位層次的屬性,當該文件打開時,僅會更新您指定的欄位。 它會告訴微軟字元,下次打開這個文件時只更新這個欄位。 「您可以使用 UpdateDirtyFields 屬性來指定是否要更新具有 dirty 屬性的欄位。」 「當 UpdateDirtyFields 的值設定為 true 時,在文件載入時所有具有 true 值的 Field.IsDirtyFieldChar.IsDirty 屬性的欄位會更新。」

以下代碼示例展示了如何更新具有「dirty」屬性的字段:

在儲存之前更新LastSavedTime屬性。

「您可以在儲存文件時,利用 UpdateLastSavedTimeProperty 屬性來更新對應的內建文件屬性 LastSavedTime。」

「下面的程式碼範例示範如何更新此屬性:」