Llevar contenido específico en un GRID a Excel

Tengo un formulario en donde agregué una Grid con información de una tabla con campos específicos, los cuales quiero exportar a Excel con los mismos campos que tengo en mi Grid en Foxpro. ¿Cómo sería el procedimiento? Tengo esto:
select Actuaciones
**copiando campos a matriz 
COPY TO ARRAY _excel FIELDS fun_codd, codact, fec_asig
***creando libro de Excel 
o=CREATEOBJECT("Excel.sheet") 
o.application.visible = .t. 
o.application.workbooks.add() 
o=o.application.sheets[1] 
FOR i = 1 TO _tally 
o.cells(i+6, 1).value = PROPER(_excel(i, 1)) 
o.cells(i+6, 2).value = PROPER(_excel(i, 2))
o.cells(i+6, 3).value = PROPER(_excel(i, 3)
Endfor
Esto convierte solo hasta el campo fun_coord y codact, pero no el de fec_asig (fecha)

2 respuestas

Respuesta
1
Para exportar a excel los campos que ves en tu grid, unicamente tienes que escoger dichos campos e incluirlos en una rutina. Te facilitare el código que yo utilizo para exportar a excel. Más abajo... va la explicación para sepas como proceder.
********************************
**--GENERACION A MICROSOFT EXCEL
**--Julio Cesar Romero
**--Mayo 12 - 2011
**--Exportar a XLS campos 
**--especificos de tabla
********************************
LError = ON('error')
ON ERROR xlapp = NULL
xlapp = GETOBJECT('Excel Application')
ON ERROR &LError
IF ISNULL(xlapp)
 xlapp = CREATEOBJECT('Excel.Application')
ENDIF
WITH xlapp
 .VISIBLE = 'True'
    .DisplayAlerts = 'False'
    .Workbooks.ADD()
ENDWITH
xlsheet = xlapp.ActiveSheet
WITH xlsheet
 .COLUMNS("A:A").ColumnWidth = 15.00
 .COLUMNS("B:B").ColumnWidth = 15.00
 .COLUMNS("C:C").ColumnWidth = 15.00
ENDWITH
Fila = 1
xlsheet.Cells(Fila,1).Value = 'Existencia De Productos En Inventario'
WITH xlsheet.Range("A1:B1")
 .Font.Name = "Corbel"
 .Font.Bold = 'True'
 .Font.Size = '14'
 .WrapText = 'False'
 .Merge     
ENDWITH
WITH xlsheet.Range("A3:A8")
 .Font.Bold = 'True'
ENDWITH
Fila = Fila + 2
xlsheet.Cells(Fila,2).Value = "Codigo"
xlsheet.Cells(Fila,3).Value = "Descripcion"
xlsheet.Cells(Fila,4).Value = "Medida"
Fila = Fila + 1
 WITH xlsheet.Range("A10:C10")
 .Font.Bold = 'True'
ENDWITH
**--Seleccionamos tabla y campos
 Select Master_productos
Scan
xlsheet.Cells(Fila,2).Value =  master_productos.codigo                    &&Campo1
xlsheet.Cells(Fila,3).Value = master_productos.descripcion              &&Campo2
xlsheet.Cells(Fila,4).Value = master_productos.unidaddemedida      &&Campo3
Fila = Fila + 1
Endscan
Si te fijas bien, haces referencia a las columnas que quieres mostrar en la hoja XLS, estableces el ancho, el titulo de la hoja, los títulos de los campos (código, descripción, unidad de medida) y luego haces referencia a las filas donde quieres mostar los campos (ultima parte). Primero seleccionas la tabla, luego linkeas las filas de la hoja de excel con cada uno de los campos que vas a mostar y listo! :)
Mira este link!
http://www.programatium.com/vfox/tutoriales/automatizar-excel-con-vfox.htm
Estaa buenisisismoo! Ahi podras encontrar como aplicar todas las propiedades desde fox para que al exportar a excel, te kede con formatoo. Es muyyy bueno. Muchos usuarios han expresado su satisfaccion! :) :)
Saludos!
Desde Managua, Nicaragua!
Ravenn! :D :D :D A tus ordenes!
¿Has podido resolver tus dudas? ¿Te ha servido mi ayuda? De ser así... te pido
Respuesta
***************Cambiar solo aqui los datos del grid y tabla pricipal a recorrer 
Otitulo     = "vigencia de contratos"
Otabla         = "contratos"
Ogrid         = thisform.grdcontratos
Col         = ogrid.columncount    
**********************
With thisform    
        oexcel = createobject("excel.application")
        with oexcel
                .workbooks.add
                .visible = .t.
                .activewindow.displaygridlines = .f.
                .activewindow.displayzeros = .f.
                .activewindow.zoom = 75
                store 5 to f
                *********titulos
                    .range("a1").select
                    .activecell.formular1c1 = otitulo 
                       with .selection.font
                        .name = "arial"
                        .size = 16
                        .shadow = .t.
                        .colorindex = 5
                        .bold = .t.
                    endwith
                    .range("a2").select
                    .activecell.formular1c1 = datetime()
                *********encabezado
                for x = 1 to col 
                    cabecera = ogrid.columns(x).header1.caption   
                    .cells(4,x) = upper(cabecera)
                    .cells(4,x).select                    
                    .selection.font.size = 14
                    .selection.interior.colorindex =  5
                    .selection.font.colorindex =  2
                endfor                                     
                *********datos 
                    select &otabla                     
                    scan for !deleted()                         
                        for x = 1 to col 
                            cadena = ogrid.columns(x).controlsource
                            cadena = &cadena
                            .cells(f,x)  = cadena 
                        endfor 
                        f = f + 1                    
                    endscan
                *********hoja
                    .columns("b:z").entirecolumn.autofit 
 endwith 
Endwith

Buena suerte!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas