 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
laremi400 Master

Registrado: 12 May 2004Mensajes: 179
|
Publicado: Mie 23 May, 2007 3:49 pm Asunto: Automatizacion OLE para OpenOffice |
|
|
Hola.
Ya he conseguido abrir una hoja de Calc de OpenOffice.
Este es el código:
| Código: |
Variant ServiceManager,Desktop,Document,Sheets,FilePath,NewSheetName,Sheet,MyStruct;
Variant vEmptyParam(OPENARRAY(int, (0, -1)), varInteger); //Un array vacío
Variant VariantArray(OPENARRAY(int, (0, 2)), varVariant);
ServiceManager = CreateOleObject("com.sun.star.ServiceManager");
if(VarType(ServiceManager) == varDispatch)
Desktop = ServiceManager.OleFunction("CreateInstance","com.sun.star.frame.Desktop");
MyStruct = ServiceManager.OleFunction("Bridge_GetStruct","com.sun.star.beans.PropertyValue");
MyStruct.OlePropertySet("name","Hidden");
MyStruct.OlePropertySet("value",false);
VariantArray.PutElement(MyStruct, 0);
//Así se abre una instancia de Calc con una hoja en blanco
//Document = Desktop.OleFunction("loadComponentFromURL", "private:factory/scalc", "_blank", 0, vEmptyParam);
//Así se abre una instancia con el documento
//El "File:///" es para que se convierta en una dirección URL"
//Document = Desktop.OleFunction("loadComponentFromURL", "File:///D:\\MiCarpeta\\MiHoja.XLS", "_blank", 0, vEmptyParam);
//En esta línea falla
Document = Desktop.OleFunction("LoadComponentFromURL","File:///D:\\MiCarpeta\\MiHoja.xls", "_blank", 0, VariantArray);
VariantArray = Unassigned();
|
El problema es que cuando intento abrir el documento con un array de variant, donde se supone que están los parametros que permiten abrir este documento "oculto" (intento importar datos desde OOo) me da un error "Ocurrió una excepción".
¿Alguien sabe de que puede ir esto?. ¿Puedo estar haciendo mal lo de asignar los datos al array de variant?.
En fin, estoy un poco saturado ya. A ver si hay suerte y alguno habeis hecho algo con esto y me podeis echar una mano.
Gracias Mil. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Vie 25 May, 2007 3:09 pm Asunto: |
|
|
Prueba cambiando los limites del array por:
| Código: | Variant VariantArray(OPENARRAY(int, (0, 0)), varVariant);
^ |
Al decirle 0, 2 quiere decir que contendra 3 elementos (desde 0 a 2). |
|
| Volver arriba |
|
 |
laremi400 Master

Registrado: 12 May 2004Mensajes: 179
|
Publicado: Lun 28 May, 2007 8:40 am Asunto: |
|
|
OK. Gracias _Leo. Así funciona.
Pero hay una cosa que no acabo de entender.
Si le pongo (0,0) estaré definiendo un array con 0 dimensiones ¿no?.
Entonces ¿VariantArray.PutElement(MyStruct, 0); le asigna dinámicamente las dimensiones y el espacio a utilizar?.
| Código: |
MyStruct = ServiceManager.OleFunction("Bridge_GetStruct","com.sun.star.beans.PropertyValue");
MyStruct.OlePropertySet("name","Hidden");
MyStruct.OlePropertySet("value",true);
VariantArray.PutElement(MyStruct, 0);
|
|
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Lun 28 May, 2007 10:29 am Asunto: |
|
|
| laremi400 escribió: | | Si le pongo (0,0) estaré definiendo un array con 0 dimensiones ¿no?. |
No, de 1. Y con 0,2 seria de 3 (0, 1 y 2).
| laremi400 escribió: | | Entonces ¿VariantArray.PutElement(MyStruct, 0); le asigna dinámicamente las dimensiones y el espacio a utilizar?. |
Eso es. |
|
| Volver arriba |
|
 |
laremi400 Master

Registrado: 12 May 2004Mensajes: 179
|
Publicado: Mar 29 May, 2007 9:31 am Asunto: |
|
|
| _Leo escribió: | | laremi400 escribió: | | Si le pongo (0,0) estaré definiendo un array con 0 dimensiones ¿no?. |
No, de 1. Y con 0,2 seria de 3 (0, 1 y 2).
| laremi400 escribió: | | Entonces ¿VariantArray.PutElement(MyStruct, 0); le asigna dinámicamente las dimensiones y el espacio a utilizar?. |
Eso es. |
Gracias _Leo. |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|