FoxPro/Visual FoxPro - VFP y Excel

 
Vista:

VFP y Excel

Publicado por Juan Carlos Lopez Lopez (128 intervenciones) el 25/01/2012 21:00:40
Saludos a toda la comunidad Foxera,

Alguien de ud. tendra alguna rutina que exporte de VFP a Excel, donde me pida cantidad de lineas por pagina, de tal manera que el encabezado se repita con cada detalle.
Ejm: el detalle puede tener 100 registros, entonces si le digo numero de lineas por pagina este saldra en 5 paginas. Espero haber sido claro.


Desde ya gracias por cualquier ayuda.

saludos.
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

VFP y Excel

Publicado por Saul (728 intervenciones) el 27/01/2012 20:50:58
Tu concepto de trabajar Excel desde visual fox no esta correcto..
puesto que si quieres hacer eso dejale el trabajo a Excel, y le pones una condicion que repita el encabezado una vez hagas tu plantilla con titulos, incluso si quires puedes ponerle totales y que valla ingresando..

Pero yo en este caso solo estoy como 10 valores a una plantilla ya hecha.. y luego vengo abro la plantilla ingreso los datos y listo..lo muesto al usuario o lo imprimo de una vez segun sea el gusto de cada quien..

Saludos..

Saul Hernandez

*PARAMETERS _Archivo
PRIVATE lcTextFile
lcTextFile = ''
xD = SYS(5)
_Archivo = 'Plantilla_DepNcNd'

lcTextFile = xd+"\Aperson\Amory\SistemaNew\Excel\"+ _Archivo +".xls"

crutinaerroractual = ON("Error")
lhuboerror = .F.
ON ERROR LHUBOERROR = .T.
oexcel = CREATEOBJECT("Excel.Application")
ON Error &cRutinaErrorActual
IF lhuboerror
nresp = MESSAGEBOX("¿Desea generar una lista sin formato?", 35,"Excel NO esta instalado en esta computadora.")
IF nresp = 6
generacsv()
ENDIF
ELSE
generahojaelectronica()
ENDIF
RETURN
ENDPROC

** Si no Existe excel Quiere mandar a un Archivo
PROCEDURE GeneraCSV
carchivo = GETFILE("Hoja excel:XLS", ;
"Archivo Excel", ;
"Grabar", 0)
IF EMPTY(carchivo)
= MESSAGEBOX("Debe seleccionar un nombre de archivo.",64, "Error")
ELSE
COPY TO (carchivo) TYPE XLS
= MESSAGEBOX("El archivo fue grabado satisfactoriamente",0, "")
ENDIF
ENDPROC

**Cominesa a Generar la Hoja
PROCEDURE GeneraHojaElectronica
*WAIT WINDOW NOCLEAR NOWAIT "Generando la hoja, espere un momento por favor."

oexcel.DisplayAlerts = .F. && Algo asi como SET SAFETY OFF
oexcel.workbooks.Open(lcTextFile)

WITH oexcel.worksheets(1)

** Barre la tabla en el Excel
SELECT Maestro
GOTO TOP

j = 14
jj = 8
jjj = 8

nExplica = ALLTRIM(Maestro.Explicacion)
nTotCar = 0.00
nTotAbo = 0.00

.range("B1").value = xEmpresa
.range("B2").value = xTipoRep
.range("D4").value = Maestro.Fecha
.range("G4").value = Maestro.Monto
.range("D6").value = Maestro.TasaCam

.range("G8").value = Maestro.numero
.range("B8").value = xBanco
.range("D10").value = xBanco2

SCAN ALL

cj = ALLTRIM(STR(j, 10,0))

.range("B" + cj).value = "'" +Maestro.cCosto
.range("C" + cj).value = Maestro.Cuenta
.range("D" + cj).value = ALLTRIM(Maestro.Descri)

IF Maestro.cargos > 0
.range("G" + cj).value = Maestro.cargos
ENDIF
IF Maestro.abonos > 0
.range("H" + cj).value = Maestro.abonos
ENDIF

nTotCar = Maestro.cargos + nTotCar
nTotAbo = Maestro.abonos + nTotAbo

j = j + 1

ENDSCAN

*-Totales
.range("G27").value = nTotCar
.range("H27").value = nTotAbo

.range("G14:H27" + cj).select()
oexcel.selection.numberformat = "#,##0.00_);[Red](#,##0.00)"

*- Explicacion
.range("C28").value = nExplica

ENDWITH

*-Impresion
oexcel.visible = .F.

oexcel.activeworkbook.printout()
oexcel.application.quit

*-Desconectar
RELEASE oexcel
ENDPROC
**
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