OLE-objekt och ActiveX-kontroller

OLE-objekt och ActiveX-kontroller

OLE-objekt och ActiveX-kontroller

Aspose.Words FOSS för .NET ger läsåtkomst till inbäddade OLE-objekt och Forms 2.0 ActiveX-kontroller via OleFormat-ingångspunkten och dess relaterade klasser i Aspose.Words.Drawing och Aspose.Words.Drawing.Ole.


Åtkomst till inbäddade OLE-objektsdata

OleFormat exponeras av en inbäddad Shape och ger åtkomst till den råa datan och metadata för det inbäddade objektet. SuggestedFileName och SuggestedExtension beskriver hur det inbäddade objektet skulle sparas, ProgId identifierar OLE-serverapplikationen som skapade det, och IsLink skiljer ett länkat objekt (SourceFullName/SourceItem pekar på den externa källan) från ett helt inbäddat. GetOleEntry(oleEntryName) läser en specifik namngiven ström från OLE:s sammansatta filstruktur, GetRawData() returnerar den kompletta råa objektdatan, och Save(fileName) / Save(stream) skriver det inbäddade objektets ursprungliga data till disk eller en ström — användbart för att extrahera den ursprungliga inbäddade filen (till exempel ett inbäddat kalkylblad eller en presentation) utan att öppna den i dess ursprungliga program. OlePackage, nås via OleFormat.OlePackage, exponerar FileName och DisplayName för objekt inbäddade som ett OLE-paket.


Arbeta med Forms 2.0 ActiveX-kontroller

Där det inbäddade objektet är en Microsoft Forms 2.0 ActiveX-kontroll (kryssrutor, textrutor, kombinationsrutor och liknande interaktiva kontroller snarare än inbäddade dokument), returnerar OleFormat.OleControl ett OleControl. Kontrollera dess IsForms2OleControl-egenskap, och om true, kasta det till Forms2OleControl (den abstrakta basklassen för alla Forms 2.0-kontroller) för att nå kontrollspecifika egenskaper: Caption, Value, Enabled, Type (ett Forms2OleControlType-värde — CheckBox, Textbox, ComboBox, OptionButton, ListBox, CommandButton och andra), samt visuella egenskaper ForeColor, BackColor, Width och Height. Behållarkontroller såsom ramar exponerar sina nästlade kontroller via ChildNodes, en Forms2OleControlCollection.


Tips och bästa praxis

  • Kontrollera OleFormat.IsLink innan du antar att inbäddad objektdata finns lokalt — länkade objekt refererar till en extern fil via SourceFullName istället för att bädda in deras innehåll.
  • Använd SuggestedExtension tillsammans med Save() för att återskapa ett rimligt utdatafilnamn när du extraherar inbäddade objekt i bulk.
  • Kontrollera alltid OleControl.IsForms2OleControl innan du kastar till Forms2OleControl — inte varje OleControl är en Forms 2.0-kontroll.
  • Forms2OleControlCollection.Count och uppräkning via GetEnumerator() låter dig gå igenom nästlade kontroller i en ram eller en flersidig behållarkontroll.

Vanliga problem

ProblemOrsakÅtgärd
GetRawData() returnerar oväntade/tomma dataObjektet är en länk (IsLink == true), inte inbäddatKontrollera IsLink först; lös SourceFullName för länkade objekt
InvalidCastException kastar OleControl till Forms2OleControlKontrollen är inte en Forms 2.0-kontrollKontrollera IsForms2OleControl innan du castar
GetOleEntry() returnerar null för en namngiven strömStrömnamen finns inte i detta objekts sammansatta filstrukturEnumerera de faktiska postnamnen snarare än att anta ett fast namn
Inbäddade kontroller i en ram hittades inteKontrollerade bara topnivå-OleControl, inte ChildNodesRekursera in i Forms2OleControl.ChildNodes för behållarkontroller

FAQ

Hur extraherar jag ett inbäddat Excel- eller PowerPoint-objekt från ett Word-dokument?

Åtkomst till formens OleFormat, anropa sedan Save(fileName) eller GetRawData() för att hämta det inbäddade objektets ursprungliga byte; använd SuggestedExtension för att namnge utdatafilen på lämpligt sätt.

Vad är skillnaden mellan ett inbäddat OLE-objekt och en Forms 2.0-kontroll?

Ett inbäddat OLE-objekt (åtkomligt via OleFormat direkt) är vanligtvis ett annat dokument (kalkylblad, presentation); en Forms 2.0-kontroll (OleFormat.OleControl → Forms2OleControl) är ett interaktivt UI-element som en kryssruta eller textruta.

Hur kan jag avgöra om ett OLE-objekt är länkat snarare än inbäddat?

Kontrollera OleFormat.IsLink — när true, SourceFullName och SourceItem beskriver den externa källan istället för att objektet bär sin egen data.

Kan jag läsa rubriken eller värdet för en checkbox-kontroll?

Ja — kasta OleControl till Forms2OleControl (efter att ha bekräftat IsForms2OleControl) och läs Caption och Value.


API Reference Sammanfattning

Klass / MetodBeskrivning
OleFormatIngångspunkt för en inbäddad OLE-objekts data och metadata
OleFormat.GetRawData()Hämta de råa inbäddade objektbytena
OleFormat.Save()Spara det inbäddade objektets ursprungliga data till en fil eller ström
OlePackageFilnamn/visningsnamn för ett OLE-paketobjekt
OleControlBasrepresentation av en inbäddad ActiveX-kontroll
Forms2OleControlMicrosoft Forms 2.0-kontroll (kryssruta, textruta, kombinationsruta, etc.)
Forms2OleControlCollectionSamling av underordnade Forms2OleControl-noder (t.ex. i en ram)
Forms2OleControlTypeEnum av Forms 2.0-kontrolltyper

Se även

 Svenska