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 

Excel y Ole (Pregunta técnica)

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Excel y Ole (Pregunta técnica) Responder citando

He buscado por todos lados (de verdad que me he esforzado antes de poner este 'post')pero no he encontrado como poner una celda o un grupo de columnas o filas con el texto en vertical,... por Ole desde el C++Builde.

Alguien me puede contestar o decir donde hay info para manejar de formas un poco mas avanzada el Excel desde Ole.

Volver arriba
Mensaje    Asunto: Excel y Ole (Pregunta técnica) Responder citando

Hola Nacho:

A ver si es esto lo que necesitas:

code:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// Añadimos #include <Comobj.hpp> para BCB3,4,5 y 6
// o bien #include <oleauto.hpp> para BCB1
//---
Variant vExcel, vLibros, vHoja, vRango, vTemp;
//--- Abre Excel
vExcel = CreateOleObject("Excel.Application");
vExcel.Exec(PropertySet("Visible") << true);
//--- Añade una nueva hoja y la selecciona
vLibros = vExcel.Exec(PropertyGet("Workbooks"));
vLibros.Exec(Procedure("Add"));
vHoja = vExcel.Exec(PropertyGet("ActiveSheet"));
//--- Escribe algo en varias celdas
vRango = vHoja.Exec(PropertyGet("Range") << "A1:D5");
vRango.Exec(PropertySet("Value") << "texto");
//--- Giramos 90 grados el contenido de las dos primeras celdas
vRango = vHoja.Exec(PropertyGet("Range") << "A1:B1");
vRango.Exec(PropertySet("Orientation") << 90);
//--- Cambiamos algunos atributos de la fuente de la primera celda
vRango = vHoja.Exec(PropertyGet("Range") << "A1");
vTemp = vRango.Exec(PropertyGet("Font"));
vTemp.Exec(PropertySet("Color") << clRed);
vTemp.Exec(PropertySet("Bold") << true);
vTemp.Exec(PropertySet("Name") << "Impact");
vTemp.Exec(PropertySet("Size") << 24);
//--- Cambiamos los colores de la segunda fila
vRango = vHoja.Exec(PropertyGet("Range") << "A2:D2");
vTemp = vRango.Exec(PropertyGet("Interior"));
vTemp.Exec(PropertySet("Color") << clLime);
//--- Cambiamos el borde de la tercera fila
vRango = vHoja.Exec(PropertyGet("Range") << "A3:D3");
vTemp = vRango.Exec(PropertyGet("Borders"));
vTemp.Exec(PropertySet("Color") << clBlue);
vTemp.Exec(PropertySet("Weight") << 4);
//---
vExcel = vLibros = vHoja = vRango = vTemp = Unassigned;
}

Saludos:
_Leo

PD: Probado en ExcelXP sobre WindowsXP con BCB1 y BCB6, aunque supongo que debe ir bien en cualquier versión.

Volver arriba
Mensaje    Asunto: Excel y Ole (Pregunta técnica) Responder citando

...aquí lo mismo, pero quizas un poco mas comodo de leer/trabajar si hay que cambiar muchas propiedades:

code:
void ExcelCellSet(const Variant& hoja, String rango, String objeto,
String propiedad, const Variant& valor)
{
Variant vTemp = hoja.Exec(PropertyGet("Range") << rango);
if (!objeto.IsEmpty())
vTemp = vTemp.Exec(PropertyGet(objeto));
vTemp.Exec(PropertySet(propiedad) << valor);
vTemp = Unassigned;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// Añadimos #include <Comobj.hpp> para BCB3,4,5 y 6
// o bien #include <oleauto.hpp> para BCB1
//---
Variant vExcel, vLibros, vHoja;
//--- Abre Excel
vExcel = CreateOleObject("Excel.Application");
vExcel.Exec(PropertySet("Visible") << true);
//--- Añade una nueva hoja y la selecciona
vLibros = vExcel.Exec(PropertyGet("Workbooks"));
vLibros.Exec(Procedure("Add"));
vHoja = vExcel.Exec(PropertyGet("ActiveSheet"));
//--- Escribe algo en varias celdas
ExcelCellSet(vHoja, "A1:D5", "", "Value", "texto");
//--- Giramos 90 grados el contenido de las dos primeras celdas
ExcelCellSet(vHoja, "A1:B1", "", "Orientation", 90);
//--- Cambiamos algunos atributos de la fuente de la primera celda
ExcelCellSet(vHoja, "A1", "Font", "Color", clRed);
ExcelCellSet(vHoja, "A1", "Font", "Bold", true);
ExcelCellSet(vHoja, "A1", "Font", "Name", "Impact");
ExcelCellSet(vHoja, "A1", "Font", "Size", 24);
//--- Cambiamos los colores de la segunda fila
ExcelCellSet(vHoja, "A2:D2", "Interior", "Color", clLime);
//--- Cambiamos el borde de la tercera fila
ExcelCellSet(vHoja, "A3:D3", "Borders", "Color", clBlue);
ExcelCellSet(vHoja, "A3:D3", "Borders", "Weight", 3);
//---
vExcel = vLibros = vHoja = Unassigned;
}


Volver arriba
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.