OLE objekty a ovládací prvky ActiveX
OLE objekty a ActiveX ovládací prvky
Aspose.Words FOSS pro .NET poskytuje přístup ke čtení vložených OLE objektů a ovládacích prvků Forms 2.0 ActiveX prostřednictvím vstupního bodu OleFormat a souvisejících tříd v Aspose.Words.Drawing a Aspose.Words.Drawing.Ole.
Přístup k datům vloženého OLE objektu
OleFormat je zpřístupněn vloženým Shape a poskytuje přístup k surovým datům a metadatům vloženého objektu. SuggestedFileName a SuggestedExtension popisují, jakým způsobem bude vložený objekt uložen, ProgId identifikuje OLE serverovou aplikaci, která jej vytvořila, a IsLink rozlišuje propojený objekt (SourceFullName/SourceItem ukazují na externí zdroj) od plně vloženého. GetOleEntry(oleEntryName) načte konkrétní pojmenovaný proud ze struktury OLE složeného souboru, GetRawData() vrátí kompletní surová data objektu a Save(fileName) / Save(stream) zapíšou nativní data vloženého objektu na disk nebo do proudu – užitečné pro extrakci původního vloženého souboru (například vložené tabulky nebo prezentace) bez otevření v jeho nativní aplikaci. OlePackage, dosažený přes OleFormat.OlePackage, zpřístupňuje FileName a DisplayName pro objekty vložené jako OLE balíček.
Práce s ovládacími prvky Forms 2.0 ActiveX
Když je vložený objekt Microsoft Forms 2.0 ActiveX ovládací prvek (zaškrtávací políčka, textová pole, rozbalovací seznamy a podobné interaktivní ovládací prvky místo vložených dokumentů), OleFormat.OleControl vrací OleControl. Zkontrolujte jeho vlastnost IsForms2OleControl a pokud true, přetypujte jej na Forms2OleControl (abstraktní základní třídu pro všechny ovládací prvky Forms 2.0), abyste získali specifické vlastnosti ovládacího prvku: Caption, Value, Enabled, Type (hodnota Forms2OleControlType – CheckBox, Textbox, ComboBox, OptionButton, ListBox, CommandButton a další), plus vizuální vlastnosti ForeColor, BackColor, Width a Height. Ovládací prvky kontejneru, jako jsou rámečky, zpřístupňují své vnořené ovládací prvky přes ChildNodes, což je Forms2OleControlCollection.
Tipy a osvědčené postupy
- Zkontrolujte
OleFormat.IsLink, než předpokládáte, že data vloženého objektu jsou lokálně přítomna — propojené objekty odkazují na externí soubor pomocíSourceFullNamemísto vložení jejich obsahu. - Použijte
SuggestedExtensionspolu sSave()k vytvoření rozumného názvu výstupního souboru při hromadném extrahování vložených objektů. - Vždy zkontrolujte
OleControl.IsForms2OleControl, než provedete přetypování naForms2OleControl— ne každýOleControlje ovládací prvek Forms 2.0. Forms2OleControlCollection.Counta enumerace pomocíGetEnumerator()vám umožní procházet vnořené ovládací prvky uvnitř rámce nebo vícestránkového kontejnerového ovládacího prvku.
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
GetRawData() vrací neočekávaná/prázdná data | Objekt je odkaz (IsLink == true), nikoli vložený | Nejprve zkontrolujte IsLink; vyřešte SourceFullName pro propojené objekty |
InvalidCastException přetypovává OleControl na Forms2OleControl | Control není ovládací prvek Forms 2.0 | Zkontrolujte IsForms2OleControl před přetypováním |
GetOleEntry() vrací null pro pojmenovaný stream | Název streamu neexistuje ve struktuře složeného souboru tohoto objektu | Vypište skutečné názvy položek namísto předpokládání pevného názvu |
| Vnořené ovládací prvky uvnitř rámce nebyly nalezeny | Zkontrolováno pouze OleControl na nejvyšší úrovni, ne ChildNodes | Rekurzivně projděte Forms2OleControl.ChildNodes pro kontejnerové ovládací prvky |
FAQ
Jak mohu extrahovat vložený objekt Excel nebo PowerPoint z dokumentu Word?
Získejte OleFormat tvaru, poté zavolejte Save(fileName) nebo GetRawData() pro získání nativních bajtů vloženého objektu; použijte SuggestedExtension k vhodnému pojmenování výstupního souboru.
Jaký je rozdíl mezi vloženým OLE objektem a ovládacím prvkem Forms 2.0?
Vložený OLE objekt (přístupný přímo přes OleFormat) je obvykle jiný dokument (tabulka, prezentace); ovládací prvek Forms 2.0 (OleFormat.OleControl → Forms2OleControl) je interaktivní prvek uživatelského rozhraní, jako je zaškrtávací políčko nebo textové pole.
Jak zjistit, zda je OLE objekt propojený místo vloženého?
Zkontrolujte OleFormat.IsLink — když true, SourceFullName a SourceItem popisují externí zdroj místo toho, aby objekt nesl vlastní data.
Můžu přečíst popisek nebo hodnotu zaškrtávacího políčka?
Ano — přetypujte OleControl na Forms2OleControl (po potvrzení IsForms2OleControl) a přečtěte Caption a Value.
API Reference Shrnutí
| Třída / Metoda | Popis: |
|---|---|
OleFormat | Vstupní bod pro data a metadata vloženého OLE objektu |
OleFormat.GetRawData() | Získat surové bajty vloženého objektu |
OleFormat.Save() | Uložte nativní data vloženého objektu do souboru nebo proudu |
OlePackage | Název souboru/zobrazovaný název pro objekt OLE Package |
OleControl | Základní reprezentace vloženého ActiveX ovládacího prvku |
Forms2OleControl | Ovládací prvek Microsoft Forms 2.0 (zaškrtávací políčko, textové pole, rozbalovací seznam atd.) |
Forms2OleControlCollection | Kolekce podřízených uzlů Forms2OleControl (např. uvnitř rámce) |
Forms2OleControlType | Výčet druhů ovládacích prvků Forms2.0 |