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.