如何将信息存储在Excel WoorkBook中

我正在使用VS2008和VSTO(C#)在Office 2007上编写一个Excel插件。这个插件需要存储embeddedWookbook或embedded到Wookbook中的信息,以便在用户使用这种信息再次打开Wookbook时恢复某些状态。 在保存Wookbook之前,Addin以XML的forms序列化所有的信息,打开WoorkBook之后,Addin试图反序列化这些信息。

我试图使用Office.DocumentProperties,但每个string元素被截断 (最多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]); 

但是这不起作用,因为序列化返回的string长度超过256个字符。

在其他的Addin中,通过Excel 2003,我将这些信息存储在第一个单元格的“非常隐藏”表单中,并且名字很奇怪。 我不知道是否有更好的解决scheme。

任何build议?

好的,我find了“好方法”。 Office.CustomXMLParts是存储XML数据的集合。

您可以直接在Msdn 1上find信息

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); }