快取資料
您可以用文件層級自訂來快取資料物件,如此就可以在離線時,或是在不開啟 Microsoft Office Word 或 Microsoft Office Excel 的情況下存取資料。若要快取物件,該物件必須具有符合特定需求的資料型別。.NET Framework 中的許多通用資料型別都符合這些需求,包括 String、DataSet 和 DataTable。
**適用於:**本主題中的資訊適用於下列應用程式的文件層級專案:Excel 2013 和 Excel 2010、Word 2013 和 Word 2010。如需詳細資訊,請參閱依 Office 應用程式和專案類型提供的功能。
有兩種方法可以將物件加入至資料快取:
若要在建置方案時將物件加入至資料快取,請將 CachedAttribute 屬性 (Attribute) 套用至物件宣告。如需詳細資訊,請參閱HOW TO:快取資料供離線使用或於伺服器上使用。
若要以程式設計的方式,在執行階段將物件加入至資料快取,請使用主項目 (例如 ThisDocument 或 ThisWorkbook 類別) 的 StartCaching 方法。如需詳細資訊,請參閱HOW TO:以程式設計方式快取 Office 文件的資料來源。
將物件加入至資料快取後,您就可以存取並修改該快取資料,而不需啟動 Word 或 Excel。如需詳細資訊,請參閱存取伺服器文件中的資料。
要快取之資料物件的要求
若要快取方案中的資料物件,該物件必須符合下列需求:
為主項目的讀寫公用 (Public) 欄位或屬性 (如 ThisDocument 或 ThisWorkbook 類別)。
不是索引子或其他參數型屬性。
此外,資料物件必須透過 XmlSerializer 類別序列化,這表示物件的類型必須具有下列特性:
是公用型別。
具有無參數的公用建構函式。
不執行要求其他安全性權限的程式碼。
只公開可讀寫的公用屬性 (忽略其他屬性)。
不公開多維式陣列 (接受巢狀陣列)。
不從屬性和欄位傳回介面。
不實作 IDictionary (如果是集合的話)。
當您快取資料物件時,Visual Studio Tools for Office Runtime 會將物件序列化為 XML 字串,該字串儲存於文件的「自訂 XML 組件」(Custom XML Part) 中。如需詳細資訊,請參閱自訂 XML 組件概觀。
快取的資料大小限制
對於您可以加入至文件中資料快取的資料總數,以及資料快取中任何個別物件的大小會有一些限制。如果超過這些限制,應用程式可能會在資料儲存到資料快取時意外關閉。
若要避免這些限制,請遵循下列方針︰
請勿將大於 10 MB 的任何物件加入至資料快取。
請勿將超過 100 MB 的總資料量加入至單一文件的資料快取。
這些都是約略值。確切的限制會根據數項因素而定,包括可用的 RAM 和執行中的處理序數目。
控制快取物件的行為
若要進一步控制快取物件的行為,您可以在該快取物件的型別上實作 ICachedType 介面。例如,如果要控制在物件被變更後如何告知使用者,則可實作這個介面。如需示範如何實作 ICachedType 的程式碼範例,請參閱 Office 程式開發範例和逐步解說中<Excel 動態控制項範例>和<Word 動態控制項範例>的 ControlCollection 類別。
保存快取受密碼保護文件中資料的變更
如果您快取受密碼保護之文件中的資料物件,則不會儲存快取資料的變更。您可以藉由覆寫兩個方法將變更儲存至快取資料。請覆寫這些方法,以便在儲存文件時暫時移除保護,然後在儲存作業完成時重新套用保護。
如需詳細資訊,請參閱HOW TO:快取受密碼保護文件中的資料。
避免將 Null 值加入至資料快取時發生資料遺失
將物件加入至資料快取時,您必須先將所有快取物件初始化為非 null 值,才能儲存和關閉文件。當儲存和關閉文件時,如果有任何快取物件擁有 null 值,則 Visual Studio Tools for Office Runtime 將自動從資料快取移除所有快取物件。
如果在設計階使用 CachedAttribute 屬性 (Attribute) 將含有 null 值的物件加入至資料快取,您就可以在開啟文件之前使用 ServerDocument類別來初始化快取資料物件。如果您想要在使用者開啟文件之前初始化未安裝 Word 或 Excel 之伺服器上的快取資料,這個方法就很有用。如需詳細資訊,請參閱存取伺服器文件中的資料。