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:
Um dem Datencache beim Erstellen der Lösung ein Objekt hinzuzufügen, wenden Sie das CachedAttribute Attribut auf die Objektdeklaration an. Weitere Informationen finden Sie unter How to: Cache data for use offline or on a server.
Um dem Datencache zur Laufzeit programmgesteuert ein Objekt hinzuzufügen, verwenden Sie die
StartCaching
Methode eines Hostelements, z. B. dieThisDocument
Klassen.ThisWorkbook
Weitere Informationen finden Sie unter How to: Programmatically cache a data source in an Office document.Nachdem Sie dem Datencache ein Objekt hinzugefügt haben, können Sie auf zwischengespeicherte Daten zugreifen und diese ändern, ohne Word oder Excel zu starten. Weitere Informationen finden Sie unter Access-Daten in Dokumenten auf dem Server.
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.
Zugehöriger Inhalt
- Vorgehensweise: Zwischenspeichern von Daten für die Offlineverwendung oder auf einem Server
- Vorgehensweise: Programmgesteuertes Zwischenspeichern einer Datenquelle in einem Office-Dokument
- Vorgehensweise: Zwischenspeichern von Daten in einem kennwortgeschützten Dokument
- Exemplarische Vorgehensweise: Erstellen einer Master-Detailbeziehung mithilfe eines zwischengespeicherten Datasets