Te envio el ejemplo de impresión de un mismo listado con salido a inyeccion o lsaer, despues a matriz y por ultimo a archivo XLS, espero te sriva
****impresion laser o inyección
PROC IMPWINPla //Catalogo Plan de Cuentas
Repo:=""
Pub:FHEHA:=Pub:Gfec ;HAIDY()
Empres:=ALLTRIM(Pub:NOMEMP)
Identi:=("Nit: "+TRANSFORM((VAL(Pub:NITEMP)),"999,999,999")+"-"+Pub:DIGEMP)
Report:="CATALAGO PLAN DE CUENTAS"
Filtro:=("Filtro: "+Pub:FILTMENS)
FecRep:="Fecha Reporte: "+Pub:HEHA+" "+TIME()+SPAC(40)+"Página: "
Archiv:=(Pub:DIRREP+"\"+ALLTRIM(Pub:GARC)+".TXT")
SELE HMAE
DBGOTOP()
IF Pub:Rsal=4
IMPXLSPla(Empres,Identi,Report,Filtro,FecRep)
ELSE
DEFINE FONT letra NAME "COURIER NEW" SIZE 0,-10
IF Pub:Rsal=1
REPORT Repo TITLE FecRep+STR(Repo:nPage,3) LEFT HEADER Empres,Identi,Report,Filtro CENTER PREVIEW FONT Letra
ELSEIF Pub:Rsal=3
REPORT Repo TO FILE (Archiv) TITLE FecRep+STR(Repo:nPage,3) LEFT HEADER Empres,Identi,Report,Filtro CENTER FONT Letra
ENDIF
COLUMN DATA SUBS(HMAE->HMCODIGO,1,10) TITLE "CODIGO"
COLUMN DATA HMAE->HMCUENTA TITLE "NOMBRE DE LA CUENTA"
COLUMN DATA HMAE->HMN TITLE "AUXILI" CENTERED
COLUMN DATA HMAE->HMX TITLE "SB-AUX" CENTERED
COLUMN DATA HMAE->HMC TITLE "COSTOS" CENTERED
COLUMN DATA HMAE->HMI TITLE "A x I " CENTERED
ENDREPORT
Repo:nTitleUpLine:=RPT_SINGLELINE
Repo:nTitleDnLine:=RPT_SINGLELINE
IF Pub:Rsal=1
Repo:Margin(0,5, RPT_LEFT, RPT_INCHES)
Repo:Margin(0.5, RPT_RIGHT, RPT_INCHES)
Repo:Margin(.45,RPT_TOP,RPT_INCHES)
Repo:Margin(.75,RPT_BOTTOM,RPT_INCHES)
ENDIF
ACTIVATE REPORT Repo WHILE !HMAE->(EOF())
Letra:END()
ENDIF
IF(Pub:Rsal=3 .OR. Pub:Rsal=4,MENSARC(),"")
******Reporte en matriz de punto
PROC IMPDOSPla //Catalogo Plan de Cuentas
Local RepDos, i, oBase, Campo1,Campo2,Campo3,Campo4,Campo5,Campo6
DataBase oBase
oBase:bEof := NIL
Pub:FHEHA:=Pub:Gfec ;HAIDY()
Empres:=ALLTRIM(Pub:NOMEMP)
Identi:=("Nit: "+TRANSFORM((VAL(Pub:NITEMP)),"999,999,999")+"-"+Pub:DIGEMP)
Report:="CATALAGO PLAN DE CUENTAS"
Filtro:=("Filtro: "+Pub:FILTMENS)
FecRep:="Fecha Reporte: "+Pub:HEHA+" "+TIME()+SPAC(32)+OemToAnsi("Página: ")
REPDOS oRepDos HEADER Empres,Identi,Report,Filtro,FecRep+STR(Pub:Pagina,4) PREVIEW CONDENSED CAPTION Pub:MimpDo
ADD COLUMN TO oRepDos TITLE "CODIGO" DATA OemToAnsi(SUBS(Campo1:=oBase:HMCODIGO,1,10)) SIZE 10
ADD COLUMN TO oRepDos TITLE "NOMBRE DE LA CUENTA" DATA OemToAnsi(Campo2:=oBase:HMCUENTA) SIZE 35
ADD COLUMN TO oRepDos TITLE "AUXILI" DATA OemToAnsi(Campo3:=oBase:HMN)+SPAC(5) SIZE 6
ADD COLUMN TO oRepDos TITLE "SB-AUX" DATA OemToAnsi(Campo4:=oBase:HMX)+SPAC(5) SIZE 6
ADD COLUMN TO oRepDos TITLE "COSTOS" DATA OemToAnsi(Campo5:=oBase:HMC)+SPAC(5) SIZE 6
ADD COLUMN TO oRepDos TITLE "A x I " DATA OemToAnsi(Campo6:=oBase:HMI)+SPAC(5) SIZE 6
oRepDos:bSkip :={||oBase:Skip()}
oRepDos:bWhile:={||!oBase:Eof()}
ACTIVATE REPDOS oRepDos
oBase:Close()
RETURN NIL
*****Envio a archivo XLS
PROC IMPXLSPla(Empres,Identi,Report,Filtro,FecRep) //Catalogo Plan de Cuentas
LOCAL oXls, aStruct, fila, k, lBold:=.f., aFont
DBCREATE("DBFXLS",{{"CODIGO ","C",10,0},{"CUENTA ","C",35,0},{"AUXILI ","C",06,0},{"SUB-AUXI","C",06,0},;
{"COSTOS ","C",06,0},{"A x i ","C",06,0}})
USE DBFXLS NEW ALIA HXLS
SELE HXLS
ARC:=Pub:DIRREP+"\"+ALLTRIM(Pub:GARC)
oXls := TXls():New(ARC+".xls",, .T. )
aStruct := DBStruct()
FOR k := 1 TO Len( aStruct )
oXls:Width( k, aStruct[ k, 3 ] * 1.2 )
NEXT
fila := 1
oXls:Say( fila+0, 02,Empres,.F.,,,,1)
oXls:Say( fila+1, 02,Identi,.F.,,,,1)
oXls:Say( fila+2, 02,Report,.F.,,,,1)
oXls:Say( fila+3, 02,FecRep,.F.,,,,1)
oXls:Say( fila+4, 02,Filtro,.F.,,,,1)
fila:=fila+6
oXls:Say( fila, 01,"CODIGO ",.F.,,,,1)
oXls:Say( fila, 02,"NOMBRE DE LA CUENTA ",.F.,,,,1)
oXls:Say( fila, 03,"AUXILIAR",.F.,,,,1)
oXls:Say( fila, 04,"SUB-AUXI",.F.,,,,1)
oXls:Say( fila, 05,"COSTOS ",.F.,,,,1)
oXls:Say( fila, 06,"A X I ",.F.,,,,1)
SELE HMAE
HMAE->( DBGoTop() )
WHILE !HMAE->( Eof() )
++fila
oXls:Say( fila, 01, HMAE->HMCODIGO,.F.,,,,0)
oXls:Say( fila, 02, HMAE->HMCUENTA,.F.,,,,0)
oXls:Say( fila, 03, HMAE->HMN,.F.,,,,0)
oXls:Say( fila, 03, HMAE->HMX,.F.,,,,0)
oXls:Say( fila, 03, HMAE->HMC,.F.,,,,0)
oXls:Say( fila, 03, HMAE->HMI,.F.,,,,0)
HMAE->( DBSkip() )
END
FILA++
oXls:End()
HXLS->(DBCLOSEAREA())
RETURN NIL
Saludos
Mauricio Arevalo