aqui te dejo un ejemplo que hice hace un tiempo haber si te sirve....
en este ejemplo guardo en un archivo excel, en formato csv el resultado de una consulta espero te sirva
Código Delphi
[-]
var
OutputFile : textFile;
NumFields,i : Integer;
nombrefile : string;
nombreFileE : PChar;
CadenaStr, CadenaFin: string;
begin
with querydesgloce do
begin
close;
sql.clear;
sql.add('SELECT * FROM CAJACHICA');
execSQL;
open;
end;
nombrefile := 'z:\RESPALDOCAJACHICA.CSV';
FileCreate(concat(nombreFile,'.CSV'));
AssignFile(OutputFile,nombrefile);
rewrite(OutputFile);
CadenaFin:='FOLIO, FECHA, DESCRIPCION, INGRESO, EGRESO, FONDO, IVA, AUTORIZA, ENTREGA, RECIBE, NOTA, FACTURA, TIPO, STATUS, FOLIOSER, COMENTARIOS, PROVEEDOR';
WriteLN(OutputFile,CadenaFin,',');
querydesgloce.First;
While not (querydesgloce.Eof) do
begin
CadenaFin:=IntToStr(querydesgloce.FieldValues['FOLIO']);
IF (querydesgloce.FieldValues['FECHA']= NULL) THEN
CadenaFin:= CADENAFIN + ',' +''
ELSE
cadenafin := CadenaFin + ',' + DATETOSTR(querydesgloce.FieldValues['FECHA']);
IF (querydesgloce.FieldValues['DESCRIPCION']= NULL) THEN
CadenaFin:= CADENAFIN + ',' +'NULL'
ELSE
cadenafin := CadenaFin + ',' + (querydesgloce.FieldValues['DESCRIPCION']);
IF (querydesgloce.FieldValues['INGRESO']= NULL) THEN
CadenaFin:= CADENAFIN + ',' +''
ELSE
cadenafin := CadenaFin + ',' + FLOATTOSTR(querydesgloce.FieldValues['INGRESO']);
IF (querydesgloce.FieldValues['EGRESO']= NULL) THEN
CadenaFin:= CADENAFIN + ',' +''
ELSE
cadenafin := CadenaFin + ',' + FLOATTOSTR(querydesgloce.FieldValues['EGRESO']);
IF (querydesgloce.FieldValues['FONDO']= NULL) THEN
CadenaFin:= CADENAFIN + ',' +''
ELSE
cadenafin := CadenaFin + ',' + FLOATTOSTR(querydesgloce.FieldValues['FONDO']);
IF (querydesgloce.FieldValues['IVA']= NULL) THEN
CadenaFin:= CADENAFIN + ',' +''
ELSE
cadenafin := CadenaFin + ',' + FLOATTOSTR(querydesgloce.FieldValues['IVA']);
IF (querydesgloce.FieldValues['AUTORIZA']= NULL) THEN
CadenaFin:= CADENAFIN + ',' +''
ELSE
cadenafin := CadenaFin + ',' + (querydesgloce.FieldValues['AUTORIZA']);
IF (querydesgloce.FieldValues['ENTREGA']= NULL) THEN
CadenaFin:= CADENAFIN + ',' +''
ELSE
cadenafin := CadenaFin + ',' + (querydesgloce.FieldValues['ENTREGA']);
IF (querydesgloce.FieldValues['RECIBE']= NULL) THEN
CadenaFin:= CADENAFIN + ',' +''
ELSE
cadenafin := CadenaFin + ',' + (querydesgloce.FieldValues['RECIBE']);
IF (querydesgloce.FieldValues['NOTA']= NULL) THEN
CadenaFin:= CADENAFIN + ',' +''
ELSE
cadenafin := CadenaFin + ',' + INTTOSTR(querydesgloce.FieldValues['NOTA']);
IF (querydesgloce.FieldValues['FACTURA']= NULL) THEN
CadenaFin:= CADENAFIN + ',' +''
ELSE
cadenafin := CadenaFin + ',' + INTTOSTR(querydesgloce.FieldValues['FACTURA']);
IF (querydesgloce.FieldValues['TIPO']= NULL) THEN
CadenaFin:= CADENAFIN + ',' +''
ELSE
cadenafin := CadenaFin + ',' + (querydesgloce.FieldValues['TIPO']);
IF (querydesgloce.FieldValues['STATUS']= NULL) THEN
CadenaFin:= CADENAFIN + ',' +''
ELSE
cadenafin := CadenaFin + ',' + INTTOSTR(querydesgloce.FieldValues['STATUS']);
IF (querydesgloce.FieldValues['FOLIOSER']= NULL) THEN
CadenaFin:= CADENAFIN + ',' +''
ELSE
cadenafin := CadenaFin + ',' + INTTOSTR(querydesgloce.FieldValues['FOLIOSER']);
IF (querydesgloce.FieldValues['COMENTARIOS']= NULL) THEN
CadenaFin:= CADENAFIN + ',' +''
ELSE
cadenafin := CadenaFin + ',' + (querydesgloce.FieldValues['COMENTARIOS']);
IF (querydesgloce.FieldValues['PROVEEDOR']= NULL) THEN
CadenaFin:= CADENAFIN + ',' +''
ELSE
cadenafin := CadenaFin + ',' + (querydesgloce.FieldValues['PROVEEDOR']);
WriteLN(OutputFile,CadenaFin,',');
querydesgloce.Next;
end;