2009-07-01 123 views
2

我正在使用VS2008和VSTO(C#)在Office 2007上編寫Excel插件。 此外掛程序需要存儲嵌入或嵌入Wookbook中的信息,以便在用戶再次打開時恢復某些狀態帶有這種信息的Wookbook。在保存Wookbook之前,Addin以XML的形式序列化所有信息,並且在打開WoorkBook之後,Addin會嘗試反序列化這些信息(如果它發現的話)。如何在Excel中存儲信息WoorkBook

我試圖用Office.DocumentProperties但每個字符串元素被截斷(max.256字符)

在事件Excel.AppEvents_WorkbookOpenEventHandlerExcel.AppEvents_WorkbookBeforeCloseEventHandler

Office.DocumentProperties properties = (Office.DocumentProperties)this.Application.ActiveWorkbook.CustomDocumentProperties; 
properties.Add(Constants.ADDIN_PERSISTENCE, false, Office.MsoDocProperties.msoPropertyTypeString, serialize(configurationInstance), null); 

在事件AppEvents_WorkbookOpenEventHandler

Office.DocumentProperties properties = (Office.DocumentProperties)Application.ActiveWorkbook.CustomDocumentProperties; 
Configuration configurationInstance = deserialize((string)properties[Constants.ADDIN_PERSISTENCE]); 

但是這不起作用,因爲序列化返回的字符串長度超過256個字符。

在其他Addin中,通過Excel 2003,我將信息存儲在第一個單元格中名爲「非常隱藏」的表單上。我不知道是否有更好的解決方案。

有什麼建議嗎?

回答

4

好的,我找到了「好方法」。 Office.CustomXMLParts是一個用於存儲XML數據的集合。

您可以直接MSDN上1

MSDN例如查找信息:

private void AddCustomXmlPartToWorkbook(Excel.Workbook workbook){ 
string xmlString = 
    "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + 
    "<employees xmlns=\"http://schemas.microsoft.com/vsto/samples\">" + 
     "<employee>" + 
      "<name>Karina Leal</name>" + 
      "<hireDate>1999-04-01</hireDate>" + 
      "<title>Manager</title>" + 
     "</employee>" + 
    "</employees>"; 
Office.CustomXMLPart employeeXMLPart = workbook.CustomXMLParts.Add(xmlString, missing); 
} 
+0

ОK,但如何讓這部分回來? – zzandy 2009-12-28 09:54:52