Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Manipular Excel

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Manipular Excel Responder citando

Esta es el magnífico post de recopilación sobre la manipulación de ficheros Excel:

https://cppbuilder.es/viewtopic.php?t=8236&sid=a9cd415509890836b23d603395df0cad

Ahora bien, para los que queramos generar un fichero Excel más avanzado aún, ¿qué debemos hacer?

Por ejemplo,
1.- Realizar una línea vertical u horizontal.
2.- Centrar el texto en el recuadro o desplazarlo.
3.- Unir celdas.
4.- Aunmentar/Disminuir el ancho de las columnas y/o filas.

En definitiva, ¿dónde podría encontrar un manual con todas las propiedades de un fichero Excel que permita modificar Borland C++ (función PropertySet)?
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Principalmente, toda la información la tienes en el fichero de ayuda de excel correspondiente a tu versión. Yo uso el office 2000 profesional y el fichero que contiene la ayuda es el XLMAIN9.CHM. El único problema que puedes tener es con los ejemplos, ya que estos vienen para visual basic, pero los objetos, métodos y demas son los mismos.

Haber si estos ejemplos te sirven; pero ten en cuenta que todo está en este mismo foro.

Cita:
1.- Dibuja un cuadrado.
Código:

//-------- Dibuja una línea horizontal superior en color negro
VRange = xlSheet.Exec(PropertyGet("Range") << "B12:E12");
VTemp = VRange.Exec(PropertyGet("Borders") << 8);
VTemp.Exec(PropertySet("Color") << clBlack);
VTemp.Exec(PropertySet("Weight") << 2);

//-------- Dibuja una línea vertical a la izquierda en color negro
VRange = xlSheet.Exec(PropertyGet("Range") << "B12:B20");
VTemp = VRange.Exec(PropertyGet("Borders") << 7);
VTemp.Exec(PropertySet("Color") << clBlack);
VTemp.Exec(PropertySet("Weight") << 2);

//-------- Dibuja una línea vertical a la derecha en color negro
VRange = xlSheet.Exec(PropertyGet("Range") << "F12:F20");
VTemp = VRange.Exec(PropertyGet("Borders") << 7);
VTemp.Exec(PropertySet("Color") << clBlack);
VTemp.Exec(PropertySet("Weight") << 2);

//-------- Dibuja una línea horizontal inferior en color negro
VRange = xlSheet.Exec(PropertyGet("Range") << "B21:E21");
VTemp = VRange.Exec(PropertyGet("Borders") << 8);
VTemp.Exec(PropertySet("Color") << clBlack);
VTemp.Exec(PropertySet("Weight") << 2);




Cita:
2.- Centrar el texto en el recuadro o desplazarlo.
Código:

VRange = xlSheet.Exec(PropertyGet("Range") << "B15");
VRange.Exec(PropertySet("Value") << "EJEMPLO   ");
VTemp = VRange.Exec(PropertyGet("Font"));
VTemp.Exec(PropertySet("Bold") << true);
VTemp.Exec(PropertySet("Size") << 12);
VRange.Exec(PropertySet("HorizontalAlignment") << -4152 /*xlHAlignCenter*/);


//Otros valores para la alineación horizontal:
//xlHAlignCenter = -4108, xlHAlignCenterAcrossSelection = 7,
//xlHAlignDistributed = -4117, xlHAlignFill = 5, xlHAlignGeneral = 1,
//xlHAlignJustify = -4130, xlHAlignLeft -4131, xlHAlignRight = -4152




Cita:
3.- Unir celdas.
Código:

//--- Usamos una instancia de Excel abierta y la hoja que este activa
Variant excel = GetActiveOleObject("Excel.Application");

//--- Unimos las celdas A1 y A2
Variant worksheet = excel.OlePropertyGet("ActiveSheet");
Variant range = worksheet.OlePropertyGet("Range", "A1:A2");
range.OleProcedure("Merge");




Me gustaria comentar que mucho de lo que aquí he expuesto son enseñanzas de _Leo, a él todo mi agradecimiento por el tiempo dedicado, un saludo para ti _Leo.
_________________
Un saludo
Rayder
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias MIL.

Pero quedan dos cuestiones:

1.- Unir celda usando las funciones Exec, PropertyGet; y no las Ole. Realmente necesito el equivalente de la línea de código:
rango.OleProcedure("Merge");
NOTA: Tal vez no exista "Merge".
2.- Modificar el ancho de las columnas.

Un saludo.

P.D.: Hablas de posts donde se resuelven estas dudas, ¿podrías direccionármelos? Los más destacados que he encontrado se encuentran en el enlace que escribí arriba y, estas dos cuestiones que planteo no me las resuelven.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Buscando por el foro con la palabra "Excel" me salen 277 concordancias, a esos post me refiero, no obstante, te dejo lo que estas buscando.

Cita:

1.- Unir celda usando las funciones Exec, PropertyGet; y no las Ole.
Código:

//--- Unimos las celdas A1 y A2
//--- Usamos una instancia de Excel abierta y la hoja que este activa
Variant excel = GetActiveOleObject("Excel.Application");
Variant worksheet = excel.OlePropertyGet("ActiveSheet");

VRange = worksheet.Exec(PropertyGet("Range") << "A1:A2");
VTemp = VRange.Exec(PropertySet("MergeCells") << true);



Cita:
2.- Modificar el ancho de las columnas.
Código:

//-------- Modificar el ancho de una columna
VRange = xlSheet.Exec(PropertyGet("Columns") << "G");
VRange.Exec(PropertySet("ColumnWidth") << 20);



Como ya he comentado, todo lo aquí expuesto lo he sacado del fichero de ayuda de excel.
_________________
Un saludo
Rayder
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.