Obiecte OLE și controale ActiveX

Obiecte OLE și controale ActiveX

Obiecte OLE și controale ActiveX

Aspose.Words FOSS pentru .NET oferă acces de citire la obiectele OLE încorporate și la controalele Forms 2.0 ActiveX prin punctul de intrare OleFormat și clasele sale conexe din Aspose.Words.Drawing și Aspose.Words.Drawing.Ole.


Accesarea datelor obiectului OLE încorporat

OleFormat este expus de un Shape încorporat și oferă acces la datele brute și la metadatele obiectului încorporat. SuggestedFileName și SuggestedExtension descriu cum ar fi salvat obiectul încorporat, ProgId identifică aplicația server OLE care l-a creat, iar IsLink diferențiază un obiect legat (SourceFullName/SourceItem indică sursa externă) de unul complet încorporat. GetOleEntry(oleEntryName) citește un flux numit specific din structura fișierului compus OLE, GetRawData() returnează datele brute complete ale obiectului, și Save(fileName) / Save(stream) scriu datele native ale obiectului încorporat pe disc sau într-un flux — util pentru extragerea fișierului încorporat original (de exemplu o foaie de calcul sau o prezentare încorporată) fără a-l deschide în aplicația sa nativă. OlePackage, accesat prin OleFormat.OlePackage, expune FileName și DisplayName pentru obiecte încorporate ca Pachet OLE.


Lucrul cu controalele Forms 2.0 ActiveX

În cazul în care obiectul încorporat este un control Microsoft Forms 2.0 ActiveX (casete de selectare, casete de text, liste derulante și controale interactive similare, în loc de documente încorporate), OleFormat.OleControl returnează un OleControl. Verificați proprietatea IsForms2OleControl, și dacă true, convertiți-o la Forms2OleControl (clasa de bază abstractă pentru toate controalele Forms 2.0) pentru a accesa proprietățile specifice controlului: Caption, Value, Enabled, Type (o valoare Forms2OleControlType — CheckBox, Textbox, ComboBox, OptionButton, ListBox, CommandButton și altele), plus proprietățile vizuale ForeColor, BackColor, Width și Height. Controalele container, cum ar fi cadrele, expun controalele lor încorporate prin ChildNodes, un Forms2OleControlCollection.


Sfaturi și bune practici

  • Verificați OleFormat.IsLink înainte de a presupune că datele obiectului încorporat sunt prezente local — obiectele legate fac referire la un fișier extern prin SourceFullName în loc să încorporeze conținutul lor.
  • Utilizați SuggestedExtension împreună cu Save() pentru a reconstrui un nume de fișier de ieșire coerent atunci când extrageți în masă obiecte încorporate.
  • Verificați întotdeauna OleControl.IsForms2OleControl înainte de a converti la Forms2OleControl — nu fiecare OleControl este un control Forms 2.0.
  • Forms2OleControlCollection.Count și enumerarea prin GetEnumerator() vă permit să parcurgeți controalele imbricate dintr-un cadru sau un control container cu pagini multiple.

Probleme comune

ProblemăCauzăRemediere
GetRawData() returnează date neașteptate/goaleObiectul este un link (IsLink == true), nu este încorporatVerificați mai întâi IsLink; rezolvați SourceFullName pentru obiectele legate
InvalidCastException casting OleControl la Forms2OleControlControlul nu este un control Forms 2.0Verificați IsForms2OleControl înainte de a face conversia
GetOleEntry() returnează null pentru un flux numitNumele fluxului nu există în structura de fișiere compuse a acestui obiectEnumerați numele reale ale intrărilor în loc să presupuneți un nume fix
Controalele imbricate din interiorul unui cadru nu au fost găsiteS-a verificat doar OleControl de nivel superior, nu ChildNodesRecursă în Forms2OleControl.ChildNodes pentru controalele container

FAQ

Cum pot extrage un obiect Excel sau PowerPoint încorporat dintr-un document Word?

Accesați OleFormat al formei, apoi apelați Save(fileName) sau GetRawData() pentru a recupera octeții nativi ai obiectului încorporat; folosiți SuggestedExtension pentru a denumi fișierul de ieșire în mod corespunzător.

Care este diferența dintre un obiect OLE încorporat și un control Forms 2.0?

Un obiect OLE încorporat (accesat prin OleFormat direct) este de obicei un alt document (foaie de calcul, prezentare); un control Forms 2.0 (OleFormat.OleControl → Forms2OleControl) este un element UI interactiv, cum ar fi o casetă de bifare sau o casetă de text.

Cum pot să determin dacă un obiect OLE este legat în loc de încorporat?

Verifică OleFormat.IsLink — când true, SourceFullName și SourceItem descriu sursa externă în loc de obiectul care conține propriile date.

Pot să citesc legenda sau valoarea unui control de tip casetă de bifare?

Da — convertește OleControl la Forms2OleControl (după ce confirmi IsForms2OleControl) și citește Caption și Value.


API Reference Rezumat

Clasă / MetodăDescriere:
OleFormatPunct de intrare pentru datele și metadatele unui obiect OLE încorporat
OleFormat.GetRawData()Recuperează octeții brute ale obiectului încorporat
OleFormat.Save()Salvează datele native ale obiectului încorporat într-un fișier sau flux
OlePackageNume de fișier/nume de afișare pentru un obiect OLE Package
OleControlReprezentare de bază a unui control ActiveX încorporat
Forms2OleControlControl Microsoft Forms 2.0 (checkbox, textbox, combo box, etc.)
Forms2OleControlCollectionColecție de noduri Forms2OleControl copil (de ex. în interiorul unui cadru)
Forms2OleControlTypeEnum al tipurilor de control Forms 2.0

Vezi și:

 Română