Ver Mensaje Individual
  #10  
Antiguo 26-06-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Reputación: 24
andres1569 Va por buen camino
Hola de nuevo:

No he utilizado nunca estos componentes, sino que como te decía he generado archivos Excel a la vieja usanza, mediante OLE variants. De esto hay varios ejemplos en estos foros, en concreto en el foro de Servers, por ejemplo:

http://www.clubdelphi.com/foros/show...p?threadid=703

La clave es recorrer tu Dataset y a cada registro asignar las filas, algo así como:

Código:
var
  ExcelObj : Variant;  // variable global

procedure TForm1.Button1Click (...);
var
  WBk, WSh : Variant;
  i, j : Integer;
  CodFarmacia : String;
begin
  ExcelObj := CreateOleObject ('Excel.Application');
  WBk := ExcelObj.Workbooks.Add('Farmacias.xlt');  // si usas una plantilla
  WSh := WBk.WorkSheets[1];
  Table1.First;
  i := 0; // lleva el contador de filas
  CodFarmacia := Table1CODFARMACIA.AsString;
  while NOT Table1.EOF do
  begin
    for j:=0 to Table1.FieldCount - 1 do
      Wsh.Cells[j, i] := Tabla1.Fields[j].AsString;
    Inc (i);
    // controlamos el cambio de grupo
    if CodFarmacia <> Table1CODFARMACIA.AsString then
    begin
      CodFarmacia := Table1CODFARMACIA.AsString;
      Inc (i);  // una forma de dejar una linea en blanco
    end;
    Table1.Next;
  end;
  ExcelObj.Visible := TRUE;
  WBk.SaveAs('Farmacias.xls');
end;

procedure TForm1.Destroy;
begin
  if NOT VarIsEmpty(ExcelObj) then ExcelObj.Quit;
end;
Insisto en que esto se sale de este foro de Impresión, es mejor que lo mires en el foro adecuado o si vas a la opción Buscar y tecleas Excel te aparecerán varios hilos donde se trata este tema. En este ejemplo que te pongo te encargas tú mismo de controlar cuándo hay un cambio de grupo (CODFARMACIA) y ahí puedes hacer lo que creas oportuno, como muestra he dejado una linea en blanco.

De todas formas, esto es muy manual, quizás encuentres algún componente que haga algo parecido.
__________________
Guía de Estilo
Responder Con Cita