Objets OLE et contrôles ActiveX

Objets OLE et contrôles ActiveX

Objets OLE et contrôles ActiveX

Aspose.Words FOSS pour .NET fournit un accès en lecture aux objets OLE incorporés et aux contrôles Forms 2.0 ActiveX via le point d’entrée OleFormat et ses classes associées dans Aspose.Words.Drawing et Aspose.Words.Drawing.Ole.


Accéder aux données d’un objet OLE incorporé

OleFormat est exposé par un Shape incorporé et fournit un accès aux données brutes et aux métadonnées de l’objet incorporé. SuggestedFileName et SuggestedExtension décrivent comment l’objet incorporé serait enregistré, ProgId identifie l’application serveur OLE qui l’a créé, et IsLink distingue un objet lié (SourceFullName/SourceItem pointent vers la source externe) d’un objet entièrement incorporé. GetOleEntry(oleEntryName) lit un flux nommé spécifique à partir de la structure de fichier composé OLE, GetRawData() renvoie l’ensemble des données brutes de l’objet, et Save(fileName) / Save(stream) écrivent les données natives de l’objet incorporé sur le disque ou vers un flux — utile pour extraire le fichier incorporé d’origine (par exemple une feuille de calcul ou une présentation incorporée) sans l’ouvrir dans son application native. OlePackage, accessible via OleFormat.OlePackage, expose FileName et DisplayName pour les objets incorporés comme un paquet OLE.


Travailler avec les contrôles Forms 2.0 ActiveX

Lorsque l’objet incorporé est un contrôle Microsoft Forms 2.0 ActiveX (cases à cocher, zones de texte, listes déroulantes et contrôles interactifs similaires plutôt que des documents incorporés), OleFormat.OleControl renvoie un OleControl. Vérifiez sa propriété IsForms2OleControl, et si true, convertissez-la en Forms2OleControl (la classe de base abstraite de tous les contrôles Forms 2.0) pour accéder aux propriétés spécifiques au contrôle: Caption, Value, Enabled, Type (une valeur Forms2OleControlType — CheckBox, Textbox, ComboBox, OptionButton, ListBox, CommandButton, et d’autres), ainsi que les propriétés visuelles ForeColor, BackColor, Width et Height. Les contrôles conteneurs tels que les cadres exposent leurs contrôles imbriqués via ChildNodes, un Forms2OleControlCollection.


Conseils et meilleures pratiques

  • Vérifiez OleFormat.IsLink avant de supposer que les données de l’objet intégré sont présentes localement — les objets liés font référence à un fichier externe via SourceFullName au lieu d’intégrer leur contenu.
  • Utilisez SuggestedExtension conjointement avec Save() pour reconstruire un nom de fichier de sortie cohérent lors de l’extraction en masse d’objets intégrés.
  • Vérifiez toujours OleControl.IsForms2OleControl avant de le convertir en Forms2OleControl — tous les OleControl ne sont pas des contrôles Forms 2.0.
  • Forms2OleControlCollection.Count et l’énumération via GetEnumerator() vous permettent de parcourir les contrôles imbriqués à l’intérieur d’un cadre ou d’un contrôle conteneur multi-pages.

Problèmes courants

ProblèmeCauseCorrection
GetRawData() renvoie des données inattendues/videL’objet est un lien (IsLink == true), pas intégréVérifiez d’abord IsLink ; résolvez SourceFullName pour les objets liés
InvalidCastException cast OleControl en Forms2OleControlLe contrôle n’est pas un contrôle Forms 2.0Vérifiez IsForms2OleControl avant de caster
GetOleEntry() renvoie null pour un flux nomméLe nom du flux n’existe pas dans la structure de fichier composé de cet objetÉnumérez les noms réels des entrées plutôt que de supposer un nom fixe
Contrôles imbriqués à l’intérieur d’un cadre non trouvésSeul le OleControl de niveau supérieur a été vérifié, pas ChildNodesRécursivement dans Forms2OleControl.ChildNodes pour les contrôles de conteneur

FAQ

Comment extraire un objet Excel ou PowerPoint intégré d’un document Word?

Accédez au OleFormat de la forme, puis appelez Save(fileName) ou GetRawData() pour récupérer les octets natifs de l’objet intégré; utilisez SuggestedExtension pour nommer correctement le fichier de sortie.

Quelle est la différence entre un objet OLE incorporé et un contrôle Forms 2.0?

Un objet OLE incorporé (accédé via OleFormat directement) est généralement un autre document (tableur, présentation); un contrôle Forms 2.0 (OleFormat.OleControl → Forms2OleControl) est un élément d’interface interactif comme une case à cocher ou une zone de texte.

Comment savoir si un objet OLE est lié plutôt qu’incorporé?

Vérifiez OleFormat.IsLink — lorsque true, SourceFullName et SourceItem décrivent la source externe au lieu que l’objet contienne ses propres données.

Puis-je lire la légende ou la valeur d’un contrôle case à cocher?

Oui — convertissez le OleControl en Forms2OleControl (après avoir confirmé IsForms2OleControl) et lisez Caption et Value.


API Reference Résumé

Classe / MéthodeDescription
OleFormatPoint d’entrée pour les données et les métadonnées d’un objet OLE intégré
OleFormat.GetRawData()Récupérer les octets bruts de l’objet intégré
OleFormat.Save()Enregistrer les données natives de l’objet intégré dans un fichier ou un flux
OlePackageNom de fichier/nom d’affichage pour un objet OLE Package
OleControlReprésentation de base d’un contrôle ActiveX intégré
Forms2OleControlContrôle Microsoft Forms 2.0 (case à cocher, zone de texte, liste déroulante, etc.)
Forms2OleControlCollectionCollection de nœuds enfants Forms2OleControl (p. ex. à l’intérieur d’un cadre)
Forms2OleControlTypeÉnumération des types de contrôles Forms 2.0

Voir aussi

 Français