OLE-objecten en ActiveX-besturingselementen

OLE-objecten en ActiveX-besturingselementen

OLE-objecten en ActiveX besturingselementen

Aspose.Words FOSS voor .NET biedt lees-toegang tot ingesloten OLE-objecten en Forms 2.0 ActiveX besturingselementen via het OleFormat toegangspunt en de gerelateerde klassen in Aspose.Words.Drawing en Aspose.Words.Drawing.Ole.


Toegang tot ingesloten OLE-objectgegevens

OleFormat wordt blootgesteld door een ingesloten Shape en biedt toegang tot de ruwe data en metadata van het ingesloten object. SuggestedFileName en SuggestedExtension beschrijven hoe het ingesloten object zou worden opgeslagen, ProgId identificeert de OLE-serverapplicatie die het heeft gemaakt, en IsLink onderscheidt een gekoppeld object (SourceFullName/SourceItem verwijzen naar de externe bron) van een volledig ingesloten object. GetOleEntry(oleEntryName) leest een specifiek benoemde stream uit de OLE-samengestelde bestandstructuur, GetRawData() retourneert de volledige ruwe objectdata, en Save(fileName) / Save(stream) schrijven de native data van het ingesloten object weg naar schijf of een stream — handig voor het extraheren van het oorspronkelijke ingesloten bestand (bijvoorbeeld een ingesloten spreadsheet of presentatie) zonder het te openen in de native applicatie. OlePackage, bereikt via OleFormat.OlePackage, maakt FileName en DisplayName beschikbaar voor objecten die als een OLE-Package zijn ingesloten.


Werken met Forms 2.0 ActiveX besturingselementen

Wanneer het ingesloten object een Microsoft Forms 2.0 ActiveX besturingselement is (selectievakjes, tekstvakken, keuzelijsten en soortgelijke interactieve besturingselementen in plaats van ingesloten documenten), retourneert OleFormat.OleControl een OleControl. Controleer zijn IsForms2OleControl eigenschap, en als true, cast het naar Forms2OleControl (de abstracte basisklasse voor alle Forms 2.0-besturingselementen) om toegang te krijgen tot controlespecifieke eigenschappen: Caption, Value, Enabled, Type (een Forms2OleControlType waarde — CheckBox, Textbox, ComboBox, OptionButton, ListBox, CommandButton en andere), plus visuele eigenschappen ForeColor, BackColor, Width en Height. Container-besturingselementen zoals frames maken hun geneste besturingselementen beschikbaar via ChildNodes, een Forms2OleControlCollection.


Tips en best practices

  • Controleer OleFormat.IsLink voordat u veronderstelt dat de gegevens van het ingebedde object lokaal aanwezig zijn — gekoppelde objecten verwijzen naar een extern bestand via SourceFullName in plaats van hun inhoud in te sluiten.
  • Gebruik SuggestedExtension samen met Save() om een logische uitvoernaam te reconstrueren bij het bulk-uitpakken van ingebedde objecten.
  • Controleer altijd OleControl.IsForms2OleControl voordat u cast naar Forms2OleControl — niet elke OleControl is een Forms 2.0-besturingselement.
  • Forms2OleControlCollection.Count en enumeratie via GetEnumerator() stellen u in staat om geneste besturingselementen binnen een frame of een container-besturingselement met meerdere pagina’s te doorlopen.

Veelvoorkomende problemen

ProbleemOorzaakOplossing
GetRawData() retourneert onverwachte/leeg gegevensObject is een link (IsLink == true), niet ingeslotenControleer eerst IsLink; los SourceFullName op voor gekoppelde objecten
InvalidCastException cast OleControl naar Forms2OleControlBesturingselement is geen Forms 2.0-besturingselementControleer IsForms2OleControl voordat je cast
GetOleEntry() geeft null terug voor een benoemde streamStreamnaam bestaat niet in de samengestelde bestandsstructuur van dit objectEnumereer de werkelijke ingangsnamen in plaats van een vaste naam aan te nemen
Geneste besturingselementen binnen een frame niet gevondenAlleen het top-niveau OleControl gecontroleerd, niet ChildNodesRecurse in Forms2OleControl.ChildNodes voor container-besturingselementen

FAQ

Hoe haal ik een ingebed Excel- of PowerPoint-object uit een Word-document?

Open de OleFormat van de vorm, roep vervolgens Save(fileName) of GetRawData() aan om de originele bytes van het ingebedde object op te halen; gebruik SuggestedExtension om het uitvoerbestand passend te benoemen.

Wat is het verschil tussen een ingebed OLE-object en een Forms 2.0-besturingselement?

Een ingebed OLE-object (direct benaderd via OleFormat) is meestal een ander document (werkblad, presentatie); een Forms 2.0-besturingselement (OleFormat.OleControl → Forms2OleControl) is een interactief UI-element zoals een checkbox of tekstvak.

Hoe kan ik zien of een OLE-object gekoppeld is in plaats van ingebed?

Controleer OleFormat.IsLink — wanneer true, SourceFullName en SourceItem de externe bron beschrijven in plaats van dat het object zijn eigen gegevens bevat.

Kan ik de bijschrift of waarde van een checkbox-besturingselement lezen?

Ja — cast de OleControl naar Forms2OleControl (na bevestiging van IsForms2OleControl) en lees Caption en Value.


API Reference Samenvatting

Klasse / MethodeBeschrijving
OleFormatToegangspunt voor de gegevens en metadata van een ingebed OLE-object
OleFormat.GetRawData()Haal de ruwe bytes van het ingebedde object op
OleFormat.Save()Sla de originele gegevens van het ingebedde object op in een bestand of stream
OlePackageBestandsnaam/weergavenaam voor een OLE Package-object
OleControlBasisrepresentatie van een ingebedde ActiveX besturingselement
Forms2OleControlMicrosoft Forms 2.0 besturingselement (selectievakje, tekstvak, keuzelijst, enz.)
Forms2OleControlCollectionVerzameling van onderliggende Forms2OleControl knooppunten (bijv. binnen een frame)
Forms2OleControlTypeEnumeratie van Forms 2.0 besturingselementtypen

Zie ook

 Nederlands