FoxPro/Visual FoxPro - como enlazo con excel

 
Vista:

como enlazo con excel

Publicado por marylu (29 intervenciones) el 09/06/2006 01:02:49
hola
necesito transferir datos de una base a un hoja de calculo (excel) con formato


gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:como enlazo con excel

Publicado por Ernesto Hernandez (4623 intervenciones) el 09/06/2006 02:06:12
Prueba esta funcion
espero te sirva



parameters wz_cursor,wz_tit,wz_plantilla

#define im "Imposible continuar"
release oexcel

file_data = wz_cursor
select (file_data)
if !abre_plantilla_xls()
cerrar_tablas()
messagebox("No se encontró la plantilla de datos en el sistema.", 16, im)
return
endif

if vartype(oexcel) # "O"
cerrar_tablas()
messagebox("No se logro iniciar una sesión de MS Excel.", 16, im)
return
endif

*>> verificar el tipo de datos de cada campo
=verificar_formato_datos(juststem(file_data))

*>> copiar todos los registros de la tabla al portapapeles
go top
_vfp.datatoclip(,,3)

*>> llamar a la macro grabada en la plantilla
oexcel.activeworkbook.dar_formato_encabezado(fcount(), wz_tit,0)

*>> mostar excel
oexcel.visible = .t.
cerrar_tablas()

procedure abre_plantilla_xls

local err, olderror, plantilla
&& plantilla = "c:\visual\plantilla.xlt"
plantilla = wz_plantilla

if !file(plantilla)
return .f.
endif

olderror = on("error")
on error err = .t.

public oexcel

oexcel = getobject(, "excel.application")

if err
oexcel = createobject("excel.application")
endif

on error &olderror

oexcel.workbooks.open(plantilla)

endproc

*!* verifica el tipo de datos de cada campo en la tabla o cursor
*!* y formatea la columna respectiva en el libro de excel, al mismo tipo
*!* de datos. No se tienen en cuenta los campos logicos y memo pues
*!* en la consulta se deben haber formateado a otro tipo.
*!* Parametros:
*!* Tabla que debe ser seleccionada

procedure verificar_formato_datos(calias)

local i

select &calias

for i = 1 to fcount()
ctipo = type(field(i))
oexcel.columns(i).select
do case
case ctipo = "C"
oexcel.selection.numberformat = "@"
case ctipo $ "N,Y"
oexcel.selection.numberformat = "#,##0.00"
case ctipo = "D"
oexcel.selection.numberformat = "dd-mm-yyyy"
case ctipo = "T"
oexcel.selection.numberformat = "dd-mmm-yyyy hh:mm a.m./p.m."
endcase

endfor

endproc

*!* Devuelve el valor de un campo logico .t., .f. o vacio por
*!* si, no o vacio respectivamente.
*!* Parametros:
*!* Valor del campo lógico

procedure cambia_valor_logico(lvalor)

do case

case lvalor = .t.
return "Si"

case lvalor = .f.
return "No"

otherwise
return " "

endcase

endproc

*!* Devuelve el valor de un campo memo como un campo de tipo caracter.
*!* Si el campo tiene más de 254 caracteres, se devuelven los primeros 251 y tres puntos suspensivos.
*!* Si se encuentra un "Enter", es reemplazado por un punto y aparte.
*!* Parametros:
*!* Valor del campo memo

procedure cambia_campo_memo(mcampo)

mcampo = alltrim(mcampo)
mcampo = strtran(mcampo, chr(13)+chr(10), ". ")
if len(mcampo) >= 254
mcampo = substr(mcampo,1,251)+"..."
endif
mcampo = padr(mcampo,254," ")
return mcampo

endproc

**
procedure cerrar_tablas
RETURN
close tables
close tables all

endproc

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar