OLE-Objekte und ActiveX-Steuerelemente

OLE-Objekte und ActiveX-Steuerelemente

OLE-Objekte und ActiveX-Steuerelemente

Aspose.Words FOSS für .NET bietet Lesezugriff auf eingebettete OLE-Objekte und Forms-2.0-ActiveX-Steuerelemente über den OleFormat-Einstiegspunkt und die zugehörigen Klassen in Aspose.Words.Drawing und Aspose.Words.Drawing.Ole.


Zugriff auf eingebettete OLE-Objektdaten

OleFormat wird von einem eingebetteten Shape bereitgestellt und ermöglicht Zugriff auf die Rohdaten und Metadaten des eingebetteten Objekts. SuggestedFileName und SuggestedExtension beschreiben, unter welchem Namen das eingebettete Objekt gespeichert würde, ProgId identifiziert die OLE-Server-Anwendung, die es erstellt hat, und IsLink unterscheidet ein verknüpftes Objekt (SourceFullName/SourceItem zeigen auf die externe Quelle) von einem vollständig eingebetteten. GetOleEntry(oleEntryName) liest einen bestimmten benannten Stream aus der OLE-Compound-Dateistruktur, GetRawData() liefert die vollständigen Rohobjektdaten zurück, und Save(fileName) / Save(stream) schreiben die nativen Daten des eingebetteten Objekts auf die Festplatte oder in einen Stream — nützlich, um die ursprüngliche eingebettete Datei (z.B. eine eingebettete Tabellenkalkulation oder Präsentation) zu extrahieren, ohne sie in ihrer nativen Anwendung zu öffnen. OlePackage, erreicht über OleFormat.OlePackage, stellt FileName und DisplayName für als OLE-Package eingebettete Objekte bereit.


Arbeiten mit Forms-2.0-ActiveX-Steuerelementen

Wenn das eingebettete Objekt ein Microsoft Forms2.0-ActiveX-Steuerelement ist (Kontrollkästchen, Textfelder, Kombinationsfelder und ähnliche interaktive Steuerelemente statt eingebetteter Dokumente), gibt OleFormat.OleControl ein OleControl zurück. Prüfen Sie dessen IsForms2OleControl-Eigenschaft, und falls true, casten Sie es zu Forms2OleControl (der abstrakten Basisklasse für alle Forms-2.0-Steuerelemente), um steuerspezifische Eigenschaften zu erreichen: Caption, Value, Enabled, Type (ein Forms2OleControlType-Wert — CheckBox, Textbox, ComboBox, OptionButton, ListBox, CommandButton und weitere), sowie visuelle Eigenschaften ForeColor, BackColor, Width und Height. Container-Steuerelemente wie Frames stellen ihre verschachtelten Steuerelemente über ChildNodes bereit, ein Forms2OleControlCollection.


Tipps und bewährte Vorgehensweisen

  • Überprüfen Sie OleFormat.IsLink, bevor Sie annehmen, dass eingebettete Objektdaten lokal vorhanden sind — verknüpfte Objekte verweisen über SourceFullName auf eine externe Datei, anstatt ihren Inhalt einzubetten.
  • Verwenden Sie SuggestedExtension zusammen mit Save(), um bei der massenhaften Extraktion eingebetteter Objekte einen sinnvollen Ausgabedateinamen zu rekonstruieren.
  • Überprüfen Sie stets OleControl.IsForms2OleControl, bevor Sie zu Forms2OleControl casten — nicht jedes OleControl ist ein Forms-2.0-Steuerelement.
  • Forms2OleControlCollection.Count und die Aufzählung über GetEnumerator() ermöglichen das Durchlaufen verschachtelter Steuerelemente innerhalb eines Rahmens oder eines mehrseitigen Container-Steuerelements.

Häufige Probleme

ProblemUrsacheLösung
GetRawData() gibt unerwartete/leere Daten zurückObjekt ist ein Link (IsLink == true), nicht eingebettetPrüfen Sie zuerst IsLink; lösen Sie SourceFullName für verknüpfte Objekte
InvalidCastException wandelt OleControl in Forms2OleControl umSteuerelement ist kein Forms 2.0-SteuerelementPrüfen Sie IsForms2OleControl vor dem Casten
GetOleEntry() gibt null für einen benannten Stream zurückDer Stream-Name existiert nicht in der zusammengesetzten Dateistruktur dieses ObjektsEnumerieren Sie die tatsächlichen Eintragsnamen, anstatt einen festen Namen anzunehmen
Verschachtelte Steuerelemente innerhalb eines Frames nicht gefundenNur das oberste OleControl geprüft, nicht ChildNodesRekursiv in Forms2OleControl.ChildNodes für Container-Steuerelemente

FAQ

Wie extrahiere ich ein eingebettetes Excel- oder PowerPoint-Objekt aus einem Word-Dokument?

Greifen Sie auf das OleFormat der Form zu, rufen Sie dann Save(fileName) oder GetRawData() auf, um die nativen Bytes des eingebetteten Objekts abzurufen; verwenden Sie SuggestedExtension, um die Ausgabedatei passend zu benennen.

Was ist der Unterschied zwischen einem eingebetteten OLE-Objekt und einer Forms2.0-Steuerung?

Ein eingebettetes OLE-Objekt (direkt über OleFormat aufgerufen) ist typischerweise ein anderes Dokument (Tabellendokument, Präsentation); eine Forms2.0-Steuerung (OleFormat.OleControl → Forms2OleControl) ist ein interaktives UI-Element wie ein Kontrollkästchen oder ein Textfeld.

Wie erkenne ich, ob ein OLE-Objekt verknüpft statt eingebettet ist?

Prüfen Sie OleFormat.IsLink— wenn true, SourceFullName und SourceItem die externe Quelle beschreiben, anstatt dass das Objekt eigene Daten trägt.

Kann ich die Beschriftung oder den Wert einer Kontrollkästchen-Steuerung auslesen?

Ja— casten Sie OleControl zu Forms2OleControl (nach Bestätigung von IsForms2OleControl) und lesen Sie Caption und Value aus.


API Reference Zusammenfassung

Klasse / MethodeBeschreibung
OleFormatEinstiegspunkt für die Daten und Metadaten eines eingebetteten OLE-Objekts
OleFormat.GetRawData()Rufen Sie die rohen Bytes des eingebetteten Objekts ab
OleFormat.Save()Speichern Sie die nativen Daten des eingebetteten Objekts in einer Datei oder einem Stream
OlePackageDateiname/Anzeigename für ein OLE-Paket-Objekt
OleControlGrundrepräsentation eines eingebetteten ActiveX-Steuerelements
Forms2OleControlMicrosoft Forms2.0-Steuerelement (Kontrollkästchen, Textfeld, Kombinationsfeld usw.)
Forms2OleControlCollectionSammlung von untergeordneten Forms2OleControl-Knoten (z.B. innerhalb eines Rahmens)
Forms2OleControlTypeAufzählung der Forms2.0-Steuerelementarten

Siehe auch

 Deutsch