PDA

Ver la Versión Completa : Exportar a Excel desde builder 6.0


damian2000
31-05-2004, 18:21:04
Hola, por mas que busco por el foro no he visto como se exporta a Excel en builder, he mirado como se hace en delphi y he intentado hacer esto:

Variant Excel = CreateOleObject("Excel.Application");
Excel.WorkBooks->Add();

con el resultado siguiente, "WorkBooks no es un miembro de Excel", alguien me podria decir como se hace? que llevo ya un buen rato y no veo la forma.

Vamos mi objetivo final es Exportar una Listview a Excel, si alguien lo tiene hecho, que por favor me ponga el codigo, gracias u un salu2

damian2000
01-06-2004, 16:08:56
Hola de nuevo, despues ya de 3 dias intentando exportar a Excel como se hace en delphi sin nigun exito, al fin he encontrado la forma de hacerlo, aki os dejo un ejemplo
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant Excel,Libro,Hoja,Celda;
Excel = CreateOleObject("Excel.Application");
Excel.OlePropertySet("Visible", true);
Libro=Excel.OlePropertyGet("Workbooks");
Libro.OleProcedure("Add");
Hoja=Libro.OlePropertyGet("Item",1);
Libro=Hoja.OlePropertyGet("Worksheets");
Libro.OlePropertyGet("Item",1).OlePropertySet("Name","The yellow book-keeping ");
Libro.OlePropertyGet("Item",2).OlePropertySet("Name","The red book-keeping ");
for (int j=1;j<3;j++)
{
Hoja=Libro.OlePropertyGet("Item",j);
for (int i=1;i<11;i++)
{
Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",i,1).OlePropertySet("Value",i);
Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",i,2).OlePropertySet("Value",i*5);
Celda=Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",i,2);
Celda.OlePropertyGet("Font").OlePropertySet("Color",clBlue);
Celda.OlePropertyGet("Font").OlePropertySet("Bold",true);
Celda.OlePropertyGet("Interior").OlePropertySet("ColorIndex",9-3*j);
}
Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",11,1).OlePropertySet("Value","=SUM(A1:A10)");
Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",11,2).OlePropertySet("Value","=SUM(B1:B10)");
}
Excel.OlePropertySet("DisplayAlerts",false); //suppress the warning dialog on closing the server
Excel.OlePropertyGet("Workbooks").OlePropertyGet("Item",1).OleProcedure("SaveAs","test.xls");
//Excel.OleProcedure("Quit");
Excel=Unassigned;
}

Salu2, espero que os sirva.

aleph
23-10-2005, 06:54:31
GRACIAS, GRACIAS,GRACIAS, tenia rato intentanto hacer lo del excel, me has ahorrado horas (sino dias de trasnocho); De nuevo gracias. :D











El aleph: un punto donde se es uno con el mundo. se esta aqui alla y en todas partes y al mismo tiempo.(Jorge Luis Borges)

aleph
23-10-2005, 23:26:19
hola,ojala leas esto pronto, me ha servido mucho tu codigo, pero falta una cosa: es posible cambiar la carpeta donde se guarda el archivo .xls? la guarda por defecto en Mis documentos que es el que tiene predefinido el Excel; he podido cambiarle el nombre ( eso fue facil), no he trabajado mucho con estos "procedimientos" para word y excel y no se me ha ocurrido una forma hasta ahora, si sabes alguna forma porfa avisame. Gracias

alt126
24-10-2005, 10:46:37
Yo hace un tiempo, tuve que realizar varias cosas con excel desde borland, generar informes con datos, formulas, graficos, imagenes... te dejo un codigo simple para empezar, si necesitas mas complejidad pues dices algo. Perdonar pero he tardado mucho en leer este hilo.


//Ahora construimos el documento excel y lo mostramos.
//Creo un Objeto de tipo aplicacion 'Excel'
Variant Excel = Variant::CreateObject("Excel.Application");
//Accedo a sus propiedades y metodos con 'OlePropertySet'
Excel.OlePropertySet("Visible",(Variant)true);
//Obtengo un objeto que será una coleccion de objetos libros
Variant MiColeccionLibros=Excel.OlePropertyGet("Workbooks");
//Creamos los libros.
//La Coleccion esta vacia y voy a añadir un libro
MiColeccionLibros.OleProcedure("Add");
//A partir de la Coleccion obtengo el primer objeto 'libro'
Variant MiLibro=MiColeccionLibros.OlePropertyGet("Item",(Variant)1);

//A partir del objeto libro obtengo una coleccion de hojas
Variant MIColeccionHojas=MiLibro.OlePropertyGet("Worksheets") ;
//A partir de la coleccion de hojas accedo de objetos hojas y las nombra
MIColeccionHojas.OlePropertyGet("Item",(Variant)1).OlePropertySet("Name",(Variant)Datos->qConsultaExcel->FieldByName("Denominacion")->AsString);
//Obtengo un objeto hoja, a partir de la coleccion de hojas
Variant MiHoja=MIColeccionHojas.OlePropertyGet("Item",(Variant)1);
//Meter una imagen!!!
MiHoja.OlePropertyGet("Shapes").OleProcedure("AddPicture",(Variant)rutalogo,(Variant)false,(Variant)true,(Variant)100,(Variant)5,(Variant)50,(Variant)50);

//Celdas para la grafica
columna = 2;
fila = 5;
//LONGITUD DE LAS CELDAS.
MiHoja.OlePropertyGet("Columns").OlePropertyGet("Item",(Variant)1).OlePropertySet("ColumnWidth",(Variant)1);
MiHoja.OlePropertyGet("Columns").OlePropertyGet("Item",(Variant)2).OlePropertySet("ColumnWidth",(Variant)20);
MiHoja.OlePropertyGet("Columns").OlePropertyGet("Item",(Variant)3).OlePropertySet("ColumnWidth",(Variant)10);
MiHoja.OlePropertyGet("Columns").OlePropertyGet("Item",(Variant)4).OlePropertySet("ColumnWidth",(Variant)14);
MiHoja.OlePropertyGet("Columns").OlePropertyGet("Item",(Variant)5).OlePropertySet("ColumnWidth",(Variant)10);
MiHoja.OlePropertyGet("Columns").OlePropertyGet("Item",(Variant)6).OlePropertySet("ColumnWidth",(Variant)14);
MiHoja.OlePropertyGet("Columns").OlePropertyGet("Item",(Variant)7).OlePropertySet("ColumnWidth",(Variant)10);
//MOSTRAMOS LOS DATOS.
//FILA 1 ++++++++++++++++++++++++++
Celda(MiHoja,fila,columna,true,true,10,clWhite,(Variant)"NOMBRE",16);
columna++;
Celda(MiHoja,fila,columna,true,true,10,clWhite,(Variant)"",16);
columna++;
Celda(MiHoja,fila,columna,true,true,10,clWhite,(Variant)"",16);
columna++;
Celda(MiHoja,fila,columna,true,true,10,clWhite,(Variant)"",16);
columna++;
Celda(MiHoja,fila,columna,true,true,10,clWhite,(Variant)"",16);
columna++;
Celda(MiHoja,fila,columna,true,true,10,clWhite,(Variant)"",16);
fila++;

//FILA 2 ++++++++++++++++++++++++++++++
columna = 2;
Celda(MiHoja,fila,columna,false,false,10,clBlack,(Variant)"Numero",15);
columna++;
Celda(MiHoja,fila,columna,false,false,10,clBlack,(Variant)"",0);
columna++;
Celda(MiHoja,fila,columna,false,false,10,clBlack,(Variant)"Inicio",15);
columna++;
Celda(MiHoja,fila,columna,false,false,10,clBlack,(Variant)"",0);
columna++;
Celda(MiHoja,fila,columna,false,false,10,clBlack,(Variant)"Fin",15);
columna++;
Celda(MiHoja,fila,columna,false,false,10,clBlack,(Variant)"",0);
columna++;
fila++;
.
.
.
.
(Y asi hasta que queramos)

se puede cambiar casi todo, color del texto, color del fondo, tipo de letra...y si no sabeis que clases son, usar la opcion de excel de grabar macro, luego haceis en excel lo que quereis saber como se hace en borland, y parais de grabar la macro. Despues veis el codigo que ha generado la macro y ahi teneis una ayuda para ver como se usa la clase.

Un saludo

Antonio

aleph
21-12-2005, 19:46:39
Gracias; otra vez; para cuando respondiste ya habia solucionado lo de como guardar cambiando todo desde el path hasta crear una carpeta no me imaginaba lo facil que era; tardare un poco en analizar el codigo y ver que me puede servir; no importa lo tarde; es bueno saber que hay gente por ahi que esta dispuesta a ayudar; Feliz navidad. :)

juanchopebe1993
20-06-2016, 21:29:37
Buen día, soy novato en la exportación de archivos, pero me gustaría me expliquen por favor la forma sencilla de como puedo modificar un archivo ya guardado en excel, y poner unos datos a unas casillas, en otras palabras modificar un excel.

Gracias es de carácter urgente.

Casimiro Notevi
22-06-2016, 17:03:16
Buen día, soy novato en la exportación de archivos, pero me gustaría me expliquen por favor la forma sencilla de como puedo modificar un archivo ya guardado en excel, y poner unos datos a unas casillas, en otras palabras modificar un excel.
Gracias es de carácter urgente.

Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), gracias por tu colaboración :)

juanchopebe1993
22-06-2016, 18:15:32
Gracias por la información, pero no podrías ayudar con la pregunta por favor?

:)

Casimiro Notevi
22-06-2016, 18:18:56
Gracias por la información, pero no podrías ayudar con la pregunta por favor?:)

Precisamente, lee nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php) y comprenderás porqué no debemos ayudarte con tu pregunta aquí.
Gracias por tu colaboración ^\||/