2009-07-01 160 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