Enviar a excel un reporte desde visual fox

Hola Experto, necesito mandar un reporte a excel donde ocupo mandar un campo de fecha, tengo valores nullos, y no se cómo validar la información.
Tengo el siguiente código
excelo = CREATEOBJECT("excel.application")
excelo.visible = .T.
excelo.workbooks.add
GO top
excelo.rows("4:4").font.color = RGB(0,0,255)
excelo.columns("a:z").font.size = 9
excelo.rows("1:2").font.size = 12
excelo.rows("1:2").font.fontstyle="Negrita"
SET STEP on
*excelo.cells(1,1).value = vNomempr
excelo.cells(2,1).value = "Reporte de Avances de Proyectos Fase I Diseño y Fase II Desarrollo" &&+dtoc(thisform.txtfecini.Value)+" al "+DTOC(thisform.txtfecfin.value)
excelo.cells(4,1).value = "Folio"
excelo.cells(4,2).value = "Categoría"
excelo.cells(4,3).value = "Línea"
excelo.cells(4,4).value = "Estilo"
excelo.cells(4,5).value = "Origen"
excelo.cells(4,6).value = "Lluvia Id."
excelo.cells(4,7).value = "Pull Over"
excelo.cells(4,8).value = "Virtuales"
excelo.cells(4,9).value = "Alta Mat."
excelo.cells(4,10).value = "Prototipo"
excelo.cells(4,11).value = "Muestras"
excelo.cells(4,12).value = "Escala"
excelo.cells(4,13).value = "Corrida"
excelo.cells(4,14).value = "Rediseño"
excelo.cells(4,15).value = "Calce In."
excelo.cells(4,16).value = "Correcciones"
excelo.cells(4,17).value = "Calce Fin."
excelo.cells(4,18).value = "Moldura"
excelo.cells(4,19).value = "Suajes"
vcontador=6
scan
excelo.cells(vcontador,1).value = di_folio_a
excelo.cells(vcontador,2).value = c_p.ap_desfam
excelo.cells(vcontador,3).value = c_p.ap_deslin
excelo.cells(vcontador,4).value = c_p.di_estilo

 
Aquí es donde no se como validar el campo nullo o vacío,
si con la primera opción o las siguientes.
excelo.cells(vcontador,5).value =iif(ISNULL(c_p.di_fecorig)," / / ",c_p.di_fecorig)
excelo.cells(vcontador,6).value = if(eserror(di_feclluv)," / / ",di_feclluv)
excelo.cells(vcontador,7).value = if(eserror(di_fecpull)," / / ",di_fecpull)
excelo.cells(vcontador,8).value = if(eserror(di_fecvirt)," / / ",di_fecvirt)
excelo.cells(vcontador,9).value = if(eserror(di_fecalta)," / / ",di_fecalta)
excelo.cells(vcontador,10).value = if(eserror(di_fecprot)," / / ",di_fecprot)
excelo.cells(vcontador,11).value = if(eserror(di_fecsolm)," / / ",di_fecsolm)
excelo.cells(vcontador,12).value = if(eserror(di_fecesc)," / / ",di_fecesc)
excelo.cells(vcontador,13).value = if(eserror(di_fecrev)," / / ",di_fecrev)
excelo.cells(vcontador,14).value = if(eserror(di_fecred)," / / ",di_fecred)
excelo.cells(vcontador,15).value = if(eserror(di_fecprci)," / / ",di_fecprci)
excelo.cells(vcontador,16).value = if(eserror(di_feccorr)," / / ",di_feccorr)
excelo.cells(vcontador,17).value = if(eserror(di_fecprcf)," / / ",di_fecprcf)
excelo.cells(vcontador,18).value = if(eserror(di_fecmold)," / / ",di_fecmold)
excelo.cells(vcontador,19).value = if(eserror(di_fecsuaj)," / / ",di_fecsuaj)
vcontador = vcontador+1
excelo.cells(vcontador,1).select
endscan
FOR a = 6 TO 10
excelo.cells(vContador,a).font.bold = .T.
excelo.cells(vcontador,a).font.color = RGB(0,0,255)
ENDFOR
FOR a = 6 TO 10
excelo.cells(vContador,a).font.bold = .T.
excelo.cells(vcontador,a).font.color = RGB(0,0,255)
ENDFOR
*excelo.Columns("A:A").ColumnWidth = 50
excelo.columns("B:Z").entirecolumn.autofit

1 respuesta

Respuesta
1
como estas,bueno como no se bien como queres que te quede el formato de la celda te pongo dos opcion, a ver si con eso podes solucionar lo que necesitas
primero
si queres que tu celda sea formato general y puedas ver los separadores de fecha, que es mas o menos lo que tenes en el codigo, la carga de la celda tendria que ser 
excelo.cells(vcontador,5).Value =iif(c_p.di_fecorig={}," /  /   ",dtoc(c_p.di_fecorig))
De esta manera en la hoja de excel te va a quedar en formato general la fecha y las barras vacías cuando la fecha este vacía.
Segundo
si queres que la celda quede con formato de fecha tenes que cambiarle el formato a la celda
excelo.cells(vcontador,5).Value =iif(c_p.di_fecorig={},"",c_p.di_fecorig)
excelo.cells(vcontador,5)).NumberFormat="d-m-yy;@"
Con esto el formato queda fecha, pero en blanco la celda cuando en tu tabla de fox este vacío el regristo. En excel si el formato es fecha de la celda y esta vacía cuando escribas te toma directamente una fecha.
Fíjate si eso te aclara un poco el panorame.
Mucha Suerte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas