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.IsLinkvoordat u veronderstelt dat de gegevens van het ingebedde object lokaal aanwezig zijn — gekoppelde objecten verwijzen naar een extern bestand viaSourceFullNamein plaats van hun inhoud in te sluiten. - Gebruik
SuggestedExtensionsamen metSave()om een logische uitvoernaam te reconstrueren bij het bulk-uitpakken van ingebedde objecten. - Controleer altijd
OleControl.IsForms2OleControlvoordat u cast naarForms2OleControl— niet elkeOleControlis een Forms 2.0-besturingselement. Forms2OleControlCollection.Counten enumeratie viaGetEnumerator()stellen u in staat om geneste besturingselementen binnen een frame of een container-besturingselement met meerdere pagina’s te doorlopen.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
GetRawData() retourneert onverwachte/leeg gegevens | Object is een link (IsLink == true), niet ingesloten | Controleer eerst IsLink; los SourceFullName op voor gekoppelde objecten |
InvalidCastException cast OleControl naar Forms2OleControl | Besturingselement is geen Forms 2.0-besturingselement | Controleer IsForms2OleControl voordat je cast |
GetOleEntry() geeft null terug voor een benoemde stream | Streamnaam bestaat niet in de samengestelde bestandsstructuur van dit object | Enumereer de werkelijke ingangsnamen in plaats van een vaste naam aan te nemen |
| Geneste besturingselementen binnen een frame niet gevonden | Alleen het top-niveau OleControl gecontroleerd, niet ChildNodes | Recurse 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 / Methode | Beschrijving |
|---|---|
OleFormat | Toegangspunt 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 |
OlePackage | Bestandsnaam/weergavenaam voor een OLE Package-object |
OleControl | Basisrepresentatie van een ingebedde ActiveX besturingselement |
Forms2OleControl | Microsoft Forms 2.0 besturingselement (selectievakje, tekstvak, keuzelijst, enz.) |
Forms2OleControlCollection | Verzameling van onderliggende Forms2OleControl knooppunten (bijv. binnen een frame) |
Forms2OleControlType | Enumeratie van Forms 2.0 besturingselementtypen |