Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Servers
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-04-2005
lroblesco lroblesco is offline
Miembro
 
Registrado: ene 2005
Ubicación: Baja California Sur, Mexico
Posts: 77
Poder: 22
lroblesco Va por buen camino
Question

Cita:
Empezado por LordSigma
Mira, yo lo que hago es lo siguiente ... (sin usar componentes y MUY rapido)
Segui los pasos y vas a ver que es facil.
1- Agrega esto en los uses: ComObj

2- Defini dos variables variant con estos nombres en un procedimiento o como campos privados del form.

var Excel, Libro : Variant

3- Al momento de crear la planilla Excel (cuando haces click en un boton por ejemplo) ejecuta este codigo.

// Crea una aplicacion Excel.
Excel := CreateOleObject ('Excel.Application');
// La muestra (vas a ver un Excel como si lu ubieras ejecutado)
Excel.Visible := True;
// Agrega un libro.
Excel.WorkBooks.Add (-4167);
// Le asigna un nombre al libro
Excel.WorkBooks[1].WorkSheets[1].Name := 'Reporte';
// Hace un puntero al libro del Excel.
Libro := Excel.WorkBooks[1].WorkSheets['Reporte'];

4- Haces la consulta en tu base de datos (yo supongo que lo haces con un TQuery) a continuacion del codigo del punto 3.

Query.SQL.Add ('Consulta');
Query.Open;

while not Query.EOF do begin
Libro.Cells [1,1] := Query.FieldByName ('Campo1').AsString;
Libro.Cells [2,1] := Query.FieldByName ('Campo2').AsString;
// ... Asi por cada campo que queres pasar.
// Fijate que uso Libro.Cells [Col, Row] que escribe en cada celda del libro.
// Tambien podes hacer un FOR y acceder a las columnas de la consulta por
// numero y no por nombre para no tener que escribir cada campo.
end;

Query.Close;

Bueno, espero que te halla resultado, contame como te fue ...
Este codigo exporta muy bien. Lo he probado. Solo que necesito saber como guardar ese libro de Excel de manera transparente para el usuario. El nombre del archivo, para mi caso es la fecha del sistema. He probado con Excel.save('nombre_archivo);
pero termina saliendo el dialogo de guardar. Como puedo solucionar esto? gracias por su ayuda.
__________________
No siempre el mas veloz es el que gana la carrera
Responder Con Cita
  #2  
Antiguo 12-04-2005
lroblesco lroblesco is offline
Miembro
 
Registrado: ene 2005
Ubicación: Baja California Sur, Mexico
Posts: 77
Poder: 22
lroblesco Va por buen camino
Exportar a Excel

Hace unos dias pregunte como exportar un stringrid a excel. Encontre un codigo aqui en el foro donde pasa de un ListView a xls, yo lo adapte para mis necesidades. Lo pongo por si otro tiene una problematica similar.
Ojo. Se necesita tener instalado excel.
Código:
 procedure TForm1.Button1Click(Sender: TObject);
 var
   Excel,xlw : Variant;
   fichero : String;
   i,j : integer;
   creado:boolean;
   MisDoc,XLSFILE:string;
 
 begin
 for i:=0 to grid.rowcount do
   for j:=0 to grid.ColCount do
 	grid.Cells[j,i]:=inttostr(i);
  creado:=false;
   try
 	begin
 	 Excel := CreateOLEObject('Excel.Application');
 	 //	Excel.WorkBooks.Add;
 	 xlw:=Excel.WorkBooks.add;
 	  creado:=true;
 	 end;
   except
 	begin
 	 Excel.Quit;
 	  raise;
 	 end;
 end;  //fin try
 
 	//***** RECORREMOS EL LISTVIEW E INSERTAMOS LOS DATOS EN EL OBJETO EXCEL *****//
    try
 	 for i:=0 to grid.rowcount-1 do
 	   for j:=0 to grid.ColCount-1 do
 		 Excel.Cells[i+1,j+1].Value:=grid.Cells[j,i];
    except
 	begin
 	   Excel.Quit;
 	   creado:=false;
 		raise;
 	 end;
    end;//end try
 
 	//***** GUARDAMOS EL OBJETO EXCEL *****//
  if (creado = true) then
   begin
 	TRY
 	 //xlw.SaveAs(FileName:=XLSFILE, Password := '');
 	 xlw.SaveAs('c:\hola.xls', Password := '');
 	  FINALLY
 		Excel.Quit;
 	end;  //fin try
    end
 	else
 	  Excel.Quit;
 
 
 
 
 end;
__________________
No siempre el mas veloz es el que gana la carrera
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 04:01:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi