Objetos OLE y controles ActiveX

Objetos OLE y controles ActiveX

Objetos OLE y controles ActiveX

Aspose.Words FOSS para .NET proporciona acceso de lectura a objetos OLE incrustados y controles ActiveX de Forms 2.0 a través del punto de entrada OleFormat y sus clases relacionadas en Aspose.Words.Drawing y Aspose.Words.Drawing.Ole.


Acceso a los datos del objeto OLE incrustado

OleFormat se expone mediante un Shape incrustado y brinda acceso a los datos brutos y a los metadatos del objeto incrustado. SuggestedFileName y SuggestedExtension describen cómo se guardaría el objeto incrustado, ProgId identifica la aplicación servidor OLE que lo creó, y IsLink distingue un objeto enlazado (SourceFullName/SourceItem apuntan a la fuente externa) de uno totalmente incrustado. GetOleEntry(oleEntryName) lee un flujo con nombre específico de la estructura de archivo compuesto OLE, GetRawData() devuelve los datos brutos completos del objeto, y Save(fileName) / Save(stream) escriben los datos nativos del objeto incrustado en disco o en un flujo — útil para extraer el archivo original incrustado (por ejemplo una hoja de cálculo o presentación incrustada) sin abrirlo en su aplicación nativa. OlePackage, accesible a través de OleFormat.OlePackage, expone FileName y DisplayName para objetos incrustados como un Paquete OLE.


Trabajando con controles ActiveX de Forms 2.0

Cuando el objeto incrustado es un control ActiveX de Microsoft Forms 2.0 (casillas de verificación, cuadros de texto, listas desplegables y controles interactivos similares en lugar de documentos incrustados), OleFormat.OleControl devuelve un OleControl. Verifique su propiedad IsForms2OleControl, y si true, conviértalo a Forms2OleControl (la clase base abstracta para todos los controles de Forms 2.0) para acceder a las propiedades específicas del control: Caption, Value, Enabled, Type (un valor Forms2OleControlType — CheckBox, Textbox, ComboBox, OptionButton, ListBox, CommandButton, y otros), más propiedades visuales ForeColor, BackColor, Width y Height. Los controles contenedores, como los marcos, exponen sus controles anidados a través de ChildNodes, un Forms2OleControlCollection.


Consejos y mejores prácticas

  • Verifique OleFormat.IsLink antes de asumir que los datos del objeto incrustado están presentes localmente — los objetos vinculados hacen referencia a un archivo externo a través de SourceFullName en lugar de incrustar su contenido.
  • Utilice SuggestedExtension junto con Save() para reconstruir un nombre de archivo de salida razonable al extraer objetos incrustados en bloque.
  • Siempre verifique OleControl.IsForms2OleControl antes de convertir a Forms2OleControl — no todos los OleControl son controles de Forms 2.0.
  • Forms2OleControlCollection.Count y la enumeración mediante GetEnumerator() le permiten recorrer controles anidados dentro de un marco o control contenedor de varias páginas.

Problemas comunes

ProblemaCausaCorrección
GetRawData() devuelve datos inesperados/vacíosEl objeto es un enlace (IsLink == true), no está incrustadoVerifique IsLink primero; resuelva SourceFullName para objetos vinculados
InvalidCastException convirtiendo OleControl a Forms2OleControlEl control no es un control de Forms 2.0Verifique IsForms2OleControl antes de hacer casteo
GetOleEntry() devuelve null para un flujo con nombreEl nombre del flujo no existe en la estructura de archivo compuesto de este objetoEnumere los nombres reales de las entradas en lugar de asumir un nombre fijo
No se encontraron controles anidados dentro de un marcoSolo se verificó OleControl a nivel superior, no ChildNodesRecorra recursivamente Forms2OleControl.ChildNodes para los controles contenedores

FAQ

¿Cómo extraigo un objeto incrustado de Excel o PowerPoint de un documento de Word?

Acceda al OleFormat de la forma, luego invoque Save(fileName) o GetRawData() para obtener los bytes nativos del objeto incrustado; use SuggestedExtension para nombrar el archivo de salida de manera adecuada.

¿Cuál es la diferencia entre un objeto OLE incrustado y un control Forms 2.0?

Un objeto OLE incrustado (accedido mediante OleFormat directamente) suele ser otro documento (hoja de cálculo, presentación); un control Forms 2.0 (OleFormat.OleControl → Forms2OleControl) es un elemento de interfaz interactivo como una casilla de verificación o un cuadro de texto.

¿Cómo puedo saber si un objeto OLE está enlazado en lugar de incrustado?

Verifique OleFormat.IsLink — cuando true, SourceFullName y SourceItem describen la fuente externa en lugar de que el objeto contenga sus propios datos.

¿Puedo leer la etiqueta o el valor de un control de casilla de verificación?

Sí — convierta OleControl a Forms2OleControl (después de confirmar IsForms2OleControl) y lea Caption y Value.


API Reference Resumen

Clase / MétodoDescripción
OleFormatPunto de entrada para los datos y metadatos de un objeto OLE incrustado
OleFormat.GetRawData()Recuperar los bytes sin procesar del objeto incrustado
OleFormat.Save()Guardar los datos nativos del objeto incrustado en un archivo o flujo
OlePackageNombre de archivo/nombre para mostrar de un objeto OLE Package
OleControlRepresentación base de un control ActiveX incrustado
Forms2OleControlControl de Microsoft Forms 2.0 (casilla de verificación, cuadro de texto, cuadro combinado, etc.)
Forms2OleControlCollectionColección de nodos Forms2OleControl hijos (p.ej., dentro de un marco)
Forms2OleControlTypeEnumeración de tipos de control de Forms 2.0

Ver también

 Español