¿Cómo exportar listados DBF o Excel?

¿Cómo exportar listados DBF o Excel?

Postby Manuel Calomarde Gomez » Thu Nov 10, 2005 1:06 pm

Hola :-)

Pues nada, que tengo que poder exportar los listados de mi aplicación a Excel o a una DBF (preferiblemente a Excel).

¿Alguna forma o idea?

Gracias a todos :-) y un saludo
User avatar
Manuel Calomarde Gomez
 
Posts: 6
Joined: Wed Nov 09, 2005 12:00 pm

Postby dbzap » Thu Nov 10, 2005 1:18 pm

esta es mi forma ( al la vieja..... )

Function Dbf2Excel( oPadre, cFileDbf, lSQL, cOtraTabla, aOtrosCampos )
Local hExcel, oDDEs
Local Planilla, aNuevo, cCelda, xValor
Local cFileXls := Spac(250)
Local j, nRegistros, nCampos
Local cEjecut := "C:\MSOFFICE\EXCEL\Excel.Exe"
Local i := 0
Local lCerrarExcel := .F.
Local aTareas := GetTasks()
Local hStmt := 0
Local TMaes := {}
Local aResult := {}
Local nOpcion := 0
Local xCampos
Local qq := Chr(34)
MEMVAR DEFATMP

DEFAULT lSQL := .F.

If aScan( aTareas, {|x| "EXCEL.EXE" $ Upper(x) } ) > 0
* excel ya fue cargado en memoria
MsgStop(OemToAnsi("Debe cerrar Excel para realizar este proceso y luego continuar"),;
"Error de Operador")
Return NIL
EndIf

If !MsgGet( "Grabar en Archivo Excel...",;
OemToansi("Nombre de Salida (sin extension .xls)"),;
@cFileXls )
Return NIL
EndIf

cFileXls := AllTrim( cFileXls )
If File( cFileXls )
MsgStop("Nombre de archivo ya existe...","Error de Operador")
Return NIL
ElseIf Empty( cFileXls )
MsgStop("Nombre de archivo no corresponde...","Error de Operador")
Return NIL
EndIf

* parece que esta bueno
cFileXls := DEFATMP+"\"+cFileXls+".Xls"
SysRefresh()

oPadre:bDdeInit := {|hWndClient, cAppName, cTopicName| MsgBeep() }
oPadre:bDdeExecute := {|hWndClient, cCommand | &(cCommand) }

DEFINE DDE oDDEs ;
SERVICE "Excel" ;
TOPIC "System"

If aScan( aTareas, {|x| "EXCEL.EXE" $ Upper(x) } ) == 0
lCerrarExcel := .T.
If ( hExcel:= WinExec( cEjecut, 8) ) < 32
If hExcel > 0
MsgStop( "Excel no cargado..." )
Return Nil
Endif
EndIf
Else
lCerrarExcel := .F.
* excel ya fue cargado en memoria
EndIf

hExcel := GetWndTask(1)
If hExcel = Nil
MsgInfo( "Programa Excel no encontrado")
Return Nil
Endif

ACTIVATE DDE oDDEs
CursorWait()

Select (cFileDbf)
COPY TO _Dbf2Xls

oDDEs:Execute("[Open(" +qq+ DEFATMP+"\_Dbf2Xls.Dbf" +qq+ ")]")
oDDEs:Execute( "[Save.As(" +qq+ cFileXls +qq+ ",1)]" )

If lCerrarExcel
SendMessage( hExcel, WM_DESTROY )
EndIf
oDDEs:End()
oDDEs := Nil

CursorArrow()

Borrar( "_Dbf2Xls.dbf" )

Return NIL
//-----------------------------------

ademas viktor tomas tiene una clase re-buena para hacer conexion con excel, creo que se llama TFILEXLS.

Saludos y espero te sirva.
User avatar
dbzap
 
Posts: 189
Joined: Mon Nov 07, 2005 7:36 pm
Location: Chile

OK peroooo ¿DDE?

Postby Manuel Calomarde Gomez » Thu Nov 10, 2005 1:28 pm

Hola :-)

Muchas muchas gracias por la superrespuesta.
Solo una cosa ¿Que es DDE?

Un saludo :-)
User avatar
Manuel Calomarde Gomez
 
Posts: 6
Joined: Wed Nov 09, 2005 12:00 pm

Postby dbzap » Thu Nov 10, 2005 6:14 pm

de lo que entiendo es Dinamic Data Exchange, o intercambio dinamico de datos....
ahora saber que es exactamente...mmmm dificil.

se que lo hace y eso me deja tranquilo un rato.
Saludos
User avatar
dbzap
 
Posts: 189
Joined: Mon Nov 07, 2005 7:36 pm
Location: Chile

Postby Canarias » Thu Nov 10, 2005 8:24 pm

DDE = Dynamic Data Exchange.
Intercambio Dinámico de Datos. Conjunto de especificaciones de Microsoft para el intercambio de datos y control de flujo entre aplicaciones.

Saludos
User avatar
Canarias
 
Posts: 35
Joined: Thu Oct 06, 2005 10:00 pm
Location: Canary Islands - Spain

Postby R.F. » Fri Nov 11, 2005 1:40 am

Si estas trabajando a 16 bits utiliza la FileXLS de Ramon Avendaño, te genera archivos XLS nativos de Excel sin necesidad de DDE ni de OLE, es mas, no necesitas tener ni siquiera excel instalado.
Saludos
R.F.
R.F.
 
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

OK gracias perooo :-)

Postby Manuel Calomarde Gomez » Fri Nov 11, 2005 7:42 am

OK, ya veo lo de DDE pero supongo que es necesaria una librería al respecto ¿o no?

Muchisimas gracias a todos y un saludo :-)
User avatar
Manuel Calomarde Gomez
 
Posts: 6
Joined: Wed Nov 09, 2005 12:00 pm

Postby Antonio Linares » Fri Nov 11, 2005 11:15 am

Manuel,

El DDE lo proporciona Windows automaticamente, de todas maneras, como te indica René, lo idóneo es usar la clase de Ramón que te evita tener que usar DDE, tener Excel instalado, etc. Pero ambas soluciones te servirán.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para CA-Clipper

Who is online

Users browsing this forum: No registered users and 13 guests