OLE-objektumok és ActiveX-vezérlők
OLE objektumok és ActiveX vezérlők
Aspose.Words FOSS for .NET olvasási hozzáférést biztosít a beágyazott OLE objektumokhoz és a Forms 2.0 ActiveX vezérlőkhöz a OleFormat belépési ponton keresztül, és a Aspose.Words.Drawing és Aspose.Words.Drawing.Ole kapcsolódó osztályaiban.
Beágyazott OLE-objektum adatainak elérése
OleFormat egy beágyazott Shape által van kitéve, és hozzáférést biztosít a beágyazott objektum nyers adatáihoz és metaadataihoz. SuggestedFileName és SuggestedExtension leírják, hogy milyen formátumban mentenének a beágyazott objektumot, ProgId azonosítja a létrehozó OLE szerveralkalmazást, és IsLink megkülönbözteti a hivatkozott objektumot (SourceFullName/SourceItem az külső forrást jelölik) egy teljesen beágyazotttól. GetOleEntry(oleEntryName) beolvas egy konkrét, nevű adatfolyamot az OLE összetett fájlstruktúrából, GetRawData() visszaadja a teljes nyers objektum adatot, és Save(fileName) / Save(stream) kiírják a beágyazott objektum natív adatait lemezre vagy adatfolyamba – hasznos az eredeti beágyazott fájl (például egy beágyazott táblázat vagy prezentáció) kinyeréséhez anélkül, hogy annak natív alkalmazásában megnyitnánk. OlePackage, amely a OleFormat.OlePackage útján érhető el, elérhetővé teszi a FileName és DisplayName objektumokat, amelyek OLE Package-ként vannak beágyazva.
A Forms 2.0 ActiveX vezérlők használata
Ha a beágyazott objektum egy Microsoft Forms 2.0 ActiveX vezérlő (jelölőnégyzetek, szövegmezők, legördülő listák és hasonló interaktív vezérlők, nem pedig beágyazott dokumentumok), akkor a OleFormat.OleControl egy OleControl-t ad vissza. Ellenőrizze a IsForms2OleControl tulajdonságát, és ha true, akkor castolja Forms2OleControl-re (az összes Forms 2.0 vezérlő absztrakt bázisosztálya), hogy elérje a vezérlőspecifikus tulajdonságokat: Caption, Value, Enabled, Type (egy Forms2OleControlType érték – CheckBox, Textbox, ComboBox, OptionButton, ListBox, CommandButton és mások), valamint a vizuális tulajdonságok ForeColor, BackColor, Width és Height. A konténer vezérlők, például a keretek, a beágyazott vezérlőiket a ChildNodes útján teszik elérhetővé, ami egy Forms2OleControlCollection.
Tippek és bevált gyakorlatok
- Ellenőrizze a(z)
OleFormat.IsLinkértékét, mielőtt azt feltételezné, hogy a beágyazott objektum adatai helyben vannak — a hivatkozott objektumok egy külső fájlra hivatkoznak a(z)SourceFullNamehasználatával a tartalom beágyazása helyett. - Használja a(z)
SuggestedExtensionés a(z)Save()kombinációját, hogy tömegesen beágyazott objektumok kicsomagolásakor értelmes kimeneti fájlnevet állítson elő. - Mindig ellenőrizze a(z)
OleControl.IsForms2OleControlértékét, mielőttForms2OleControltípusra konvertálna — nem mindenOleControlegy Forms 2.0 vezérlő. - A(z)
Forms2OleControlCollection.Countés a(z)GetEnumerator()szerinti felsorolás lehetővé teszi a beágyazott vezérlők bejárását egy keret vagy többoldalas tárolóvezérlő belsejében.
Gyakori problémák
| Probléma | Ok | Javítás |
|---|---|---|
GetRawData() váratlan/üres adatot ad vissza | Az objektum egy hivatkozás (IsLink == true), nem beágyazott | Ellenőrizze előbb a IsLink értéket; oldja fel a SourceFullName értéket a hivatkozott objektumoknál |
InvalidCastException átalakítja a OleControl típusát Forms2OleControl típusra | A vezérlő nem Forms 2.0 vezérlő | Ellenőrizze a(z) IsForms2OleControl értékét a konvertálás előtt |
GetOleEntry() null értéket ad vissza egy névvel ellátott stream esetén | A stream neve nem létezik ennek az objektumnak az összetett fájlstruktúrájában | Sorolja fel a tényleges bejegyzésneveket ahelyett, hogy egy rögzített nevet feltételezne |
| Beágyazott vezérlők a kereten belül nem találhatók | Csak a felső szintű OleControl lett ellenőrizve, nem a ChildNodes | Rekurzív módon lépjen be a Forms2OleControl.ChildNodes konténervezérlőkbe |
FAQ
Hogyan tudok egy beágyazott Excel vagy PowerPoint objektumot kinyerni egy Word-dokumentumból?
Érje el a forma OleFormat elemét, majd hívja a(z) Save(fileName) vagy GetRawData() metódust a beágyazott objektum natív bájtjainak lekéréséhez; a(z) SuggestedExtension segítségével nevezze el megfelelően a kimeneti fájlt.
Mi a különbség egy beágyazott OLE objektum és egy Forms 2.0 vezérlő között?
Egy beágyazott OLE objektum (amelyet közvetlenül a OleFormat használ) általában egy másik dokumentum (táblázat, prezentáció); egy Forms 2.0 vezérlő (OleFormat.OleControl → Forms2OleControl) egy interaktív felhasználói felület elem, például jelölőnégyzet vagy szövegdoboz.
Hogyan tudom megállapítani, hogy egy OLE objektum linkelt-e a beágyazott helyett?
Ellenőrizze a OleFormat.IsLink — ha a true, SourceFullName és SourceItem a külső forrást írják le, ahelyett, hogy az objektum saját adatokat hordozna.
Ki tudom olvasni egy jelölőnégyzet vezérlő feliratát vagy értékét?
Igen — konvertálja a OleControl típusát Forms2OleControl-re (miután megerősítette a IsForms2OleControl) és olvassa a Caption és a Value értékeket.
API Reference összefoglaló
| Osztály / Metódus | Leírás |
|---|---|
OleFormat | Belépési pont egy beágyazott OLE-objektum adatainak és metaadatai számára |
OleFormat.GetRawData() | A beágyazott objektum nyers bájtjainak lekérése |
OleFormat.Save() | A beágyazott objektum natív adatainak mentése fájlba vagy adatfolyamba |
OlePackage | Fájlnév/megjelenített név egy OLE Package objektumhoz |
OleControl | Beágyazott ActiveX vezérlő alapreprezentációja |
Forms2OleControl | Microsoft Forms 2.0 vezérlő (jelölőnégyzet, szövegmező, kombinált lista, stb.) |
Forms2OleControlCollection | Gyermek Forms2OleControl csomópontok gyűjteménye (pl. egy keretben) |
Forms2OleControlType | A Forms 2.0 vezérlőfajták felsorolása |