2009-07-01 13 views
2

Ich programmiere ein Excel-Addin mit VS2008 und VSTO (C#) über Office 2007. Dieses Add-in muss Informationen eingebettet oder in das Wookbook speichern, um einige Status wiederherzustellen, wenn der Benutzer wieder öffnet das Wookbook mit dieser Art von Informationen. Bevor Sie das Wookbook speichern, serialisiert das Addin in XML alle Informationen, und nach dem Öffnen eines WoorkBook versucht das Addin diese Informationen zu deserialisieren, wenn es gefunden wurde.Wie man Informationen in einem Excel-WoorkBook speichert

I versucht, die Office.DocumentProperties zu verwenden, aber jedes Schnurelement abgeschnitten (max.256 Zeichen)

Bei Veranstaltungen Excel.AppEvents_WorkbookOpenEventHandler und Excel.AppEvents_WorkbookBeforeCloseEventHandler:

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

Bei Ereignis AppEvents_WorkbookOpenEventHandler:

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

Das funktioniert jedoch nicht, da die Serialisierung eine Zeichenfolge zurückgibt, die länger als 256 Zeichen ist.

In anderen Addin, über Excel 2003, speichere ich die Informationen in der ersten Zelle auf einem "sehr versteckten" Blatt mit einem seltsamen Namen. Ich weiß nicht, ob es bessere Lösungen gibt.

Irgendwelche Vorschläge?

Antwort

4

OK, ich fand "die gute Methode". Office.CustomXMLParts ist eine Sammlung zum Speichern von XML-Daten.

Sie Informationen direkt an Msdn 1

MSDN Beispiel finden:

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, aber, wie man wieder, dass ein Teil zu bekommen? – zzandy

Verwandte Themen