Copiar datos de una tabla a excel desde un grid

635 views
Skip to first unread message

gonzal...@hotmail.com

unread,
Jul 1, 2012, 4:17:47 PM7/1/12
to publice...@googlegroups.com
Hay una funcion llamada: _vfp.datatoclip(), esta funcion copia los elemntos de una tabla al portapapeles y este puede ser recuperado en una hoja de excel, pero lo hace por lineas, sin separar los campos.
Aqui les mando un reeplazo de esa funcion que si puede copiar los datos de una tabla en el portapapeles y luego ser recuperado en excel o en word, talves alguien pueda mejorarlo.

Saludos.
desde Bolivia

local c(1),i,r,re
re=iif(!eof(),recno(),0)
afields(c)
_cliptext=""
go top
do while !eof()
    scatter name r
    for i=1 to alen(c,1)
        do case
            case c(i,2)="C"
                _cliptext=_cliptext+r.&c(i,1)+chr(9)
            case c(i,2)="D"
                _cliptext=_cliptext+dtoc(r.&c(i,1))+chr(9)
            case c(i,2)="L"
                _cliptext=_cliptext+iif(r.&c(i,1),"V","F")+chr(9)
            case c(i,2)="N"
                _cliptext=_cliptext+strtran(str(r.&c(i,1),c(i,3),c(i,4)),".",",")+chr(9)
        endcase
    next
    _cliptext=_cliptext+chr(13)
    skip
enddo       
if re>0
    go re
endif   


Luis Maria Guayan

unread,
Jul 1, 2012, 4:24:49 PM7/1/12
to publice...@googlegroups.com
Si lo hace, solo que le debes pasar los parámetros correctos, intenta

GO TOP IN MiCursor
_VFP.DataToClip("MiCursor",,3)

y ahora intenta pegarlos en Excel y cuentanos el resultado.

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

gonzal...@hotmail.com

unread,
Jul 1, 2012, 4:54:31 PM7/1/12
to publice...@googlegroups.com
Es verdad, lo hace, sin embargo, los campos numéricos pasan como texto y la primera fila contiene los nombres de los campos.

Gracias.


Un saludo

Daniel Sánchez

unread,
Jul 1, 2012, 5:43:44 PM7/1/12
to publice...@googlegroups.com
Yo lo hago como lo desea el compañero, tomo los datos del grid, con los títulos de las columnas según como aparece en el grid, y los formatos de todas las columnas tal como se ve en el grid, también uso el _cliptext pero te recomendaría que no concatenes directamente a esa variable del sistema FoxPro si no que uses tu variable personal y al último recién le igualas al _cliptext, yo detecte funcionamientos extraños trabajando tal como tu lo haces en dicha variable directamente cuando cambia a otra asignando los datos una vez finalizado funciono sin problemas.

Saludos

--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil +051-949398047
Trujillo - Perú

Carlos Yohn (A.G.P.)

unread,
May 23, 2017, 10:24:04 AM5/23/17
to Comunidad de Visual Foxpro en Español
Hola Luis Mª.
¿Cómo estás?

Tengo un problema con esto: quiero implementarlo cuando hacen click en la esquina superior izquierda, pero gridhittest no reconoce ese lugar en el evento click.
¿Alguna sugerencia?


Local m.x, m.y, m.donde, m.fila, m.columna, m.oerror as Exception

m.x = Mcol(Thisform.Name, 3)

m.y = Mrow(Thisform.Name, 3)

If This.GridHitTest(m.x, m.y, @m.donde, @m.fila, @m.columna)

If m.donde = 11

Set Point To "."

Set Date AMERICAN

m.exito = .T.

Try && porque si está vacío el cursor, da un error

_vfp.DataToClip(this.RecordSource, , 3)

Catch To oerror

m.exito = .F.

Endtry

*--- Y restablezco ---*

Set Point To ","

Set Date French

Endif

Endif

Carlos Yohn (A.G.P.)

unread,
May 23, 2017, 10:29:57 AM5/23/17
to Comunidad de Visual Foxpro en Español
Perdón. Veo que en el evento click no salta, pero sí en el mouseup o mousedown. Con eso me vale.
Gracias.

Fidel Charny

unread,
May 23, 2017, 11:23:53 AM5/23/17
to Comunidad de Visual Foxpro en Español
La primera fila contiene el nombre de los campos.
En cuanto a los campos numéricos debes tener en cuenta la configuración del separador decimal. Por ejemplo:
* copiar los 20 registros siguientes del cursor "clientop", separados por Chr(9)
lcPoint = SET("Point")
SET POINT TO ","
_vfp.DataToClip("clientop",20,3)
SET POINT TO &lcPoint
Reply all
Reply to author
Forward
0 new messages