Daten zwischenspeichern

Sie können Datenobjekte in einer Anpassung auf Dokumentebene zwischenspeichern, sodass auf die Daten offline zugegriffen werden kann, oder ohne Microsoft Office Word oder Microsoft Office Excel zu öffnen. Um ein Objekt zwischenzuspeichern, muss das Objekt über einen Datentyp verfügen, der bestimmte Anforderungen erfüllt. Viele gängige Datentypen in .NET Framework erfüllen diese Anforderungen, einschließlich String, DataSetund DataTable.

Gilt für: Die Informationen in diesem Thema gelten für Projekte auf Dokumentebene für Excel und Word. Weitere Informationen finden Sie unter features available by Office-App lication and project type.

Es gibt zwei Möglichkeiten zum Hinzufügen eines Objekts zum Datencache:

Anforderungen für datenobjekte, die zwischengespeichert werden sollen

Um ein Datenobjekt in Ihrer Lösung zwischenzuspeichern, muss das Objekt die folgenden Anforderungen erfüllen:

  • Seien Sie ein öffentliches Lese-/Schreibzugriffsfeld oder eine Eigenschaft eines Hostelements, z. B. die ThisDocument Klassen.ThisWorkbook

  • Es handelt sich nicht um einen Indexer oder eine andere parametrisierte Eigenschaft.

    Darüber hinaus muss das Datenobjekt von der XmlSerializer Klasse serialisierbar sein, was bedeutet, dass der Typ des Objekts folgende Merkmale aufweisen muss:

  • Geben Sie einen öffentlichen Typ an.

  • Weisen Sie einen öffentlichen Konstruktor ohne Parameter auf.

  • Führen Sie keinen Code aus, der zusätzliche Sicherheitsberechtigungen erfordert.

  • Nur öffentliche Eigenschaften mit Lese-/Schreibzugriff verfügbar machen (andere Eigenschaften werden ignoriert).

  • Nicht mehrdimensionale Arrays verfügbar machen (geschachtelte Arrays werden akzeptiert).

  • Keine Schnittstellen von Eigenschaften und Feldern zurückgeben.

  • Wird nicht implementiert IDictionary , wenn eine Sammlung vorhanden ist.

    Wenn Sie ein Datenobjekt zwischenspeichern, serialisiert die Visual Studio-Tools für Office-Laufzeit das Objekt in eine XML-Zeichenfolge, die in einem benutzerdefinierten XML-Teil im Dokument gespeichert ist. Weitere Informationen finden Sie in der Übersicht über benutzerdefinierte XML-Komponenten.

Grenzwerte für zwischengespeicherte Datengrößen

Es gibt einige Grenzwerte für die Gesamtmenge der Daten, die Sie dem Datencache in einem Dokument hinzufügen können, und zur Größe eines einzelnen Objekts im Datencache. Wenn Sie diese Grenzwerte überschreiten, wird die Anwendung möglicherweise unerwartet geschlossen, wenn die Daten im Datencache gespeichert werden.

Um diese Grenzwerte zu vermeiden, befolgen Sie die folgenden Richtlinien:

  • Fügen Sie dem Datencache kein Objekt hinzu, das größer als 10 MB ist.

  • Fügen Sie dem Datencache in einem einzelnen Dokument nicht mehr als 100 MB Gesamtdaten hinzu.

    Dies sind ungefähre Werte. Die genauen Grenzwerte hängen von mehreren Faktoren ab, einschließlich des verfügbaren RAM und der Anzahl der laufenden Prozesse.

Steuern des Verhaltens von zwischengespeicherten Objekten

Um mehr Kontrolle über das Verhalten eines zwischengespeicherten Objekts zu erlangen, können Sie die ICachedType Schnittstelle für den Typ des zwischengespeicherten Objekts implementieren. Sie können diese Schnittstelle beispielsweise implementieren, wenn Sie steuern möchten, wie der Benutzer benachrichtigt wird, wenn das Objekt geändert wurde. Codebeispiele, die das Implementieren veranschaulichen ICachedType, finden Sie in der ControlCollection Klasse im Beispiel für dynamische Excel-Steuerelemente und im Word-Beispiel für dynamische Steuerelemente in Office-Entwicklungsbeispielen und exemplarischen Vorgehensweisen.

Speichern von Änderungen an zwischengespeicherten Daten in kennwortgeschützten Dokumenten

Wenn Sie Datenobjekte in einem Dokument zwischenspeichern, das mit einem Kennwort geschützt ist, werden Änderungen an den zwischengespeicherten Daten nicht gespeichert. Sie können Änderungen an den zwischengespeicherten Daten speichern, indem Sie zwei Methoden überschreiben. Überschreiben Sie diese Methoden, um den Schutz vorübergehend zu entfernen, wenn das Dokument gespeichert wird, und anschließend den Schutz erneut anwenden, nachdem der Speichervorgang abgeschlossen ist.

Weitere Informationen finden Sie unter How to: Cache data in a password-protected document.

Verhindern von Datenverlust beim Hinzufügen von NULL-Werten zum Datencache

Wenn Sie dem Datencache Objekte hinzufügen, müssen alle zwischengespeicherten Objekte auf einen Wert ohne Null initialisiert werden, bevor das Dokument gespeichert und geschlossen wird. Wenn ein zwischengespeichertes Objekt einen NULL-Wert aufweist, wenn das Dokument gespeichert und geschlossen wird, entfernt die Visual Studio-Tools für Office-Laufzeit automatisch alle zwischengespeicherten Objekte aus dem Datencache.

Wenn Sie ein Objekt mit einem NULL-Wert zum Datencache hinzufügen, indem Sie das CachedAttribute Attribut zur Entwurfszeit verwenden, können Sie die ServerDocument Klasse verwenden, um die zwischengespeicherten Datenobjekte zu initialisieren, bevor das Dokument geöffnet wird. Dies ist nützlich, wenn Sie die zwischengespeicherten Daten auf einem Server initialisieren möchten, ohne dass Word oder Excel installiert ist, bevor das Dokument von einem Endbenutzer geöffnet wird. Weitere Informationen finden Sie unter Access-Daten in Dokumenten auf dem Server.