Excel - grid

C
16 de Diciembre del 2003
hola espero me puedan ayudar como puedo exportar los datos de mi grid a un documento de excel desde vfp 6.0

mmm
16 de Diciembre del 2003
No se de donde viene este código, pero es posible que te funcione.


vTabla = "C:SIGXXDATAGENERALESPADRON"
vTabla = "LECTURAS"

*USE (vTabla) IN 0 AGAIN

SELECT (vTabla)
gO TOP

vTotRegs = RECCOUNT()
vTotFil = 6500
vTotHoj = ROUND(vTotRegs / vTotFil, 0)
vNumHojDef = 3

*** Calculando el Numero de Registros que entraran en la hojas excel
CREATE CURSOR TMPHOJAS_GRR ;
(AHOJA C(06), ;
ARANGO1 N(10), ;
ARANGO2 N(10), ;
ATABLA C(50), ;
AEXCEL C(50))

vRango1 = 1

FOR vContador = 1 TO vTotHoj
APPEND BLANK
REPLACE AHOJA WITH "HOJA_" + ALLT(STR(vContador)), ;
ARANGO1 WITH vRango1, ;
ARANGO2 WITH (vRango1 + vTotFil) - 1, ;
ATABLA WITH "C:MITABLA" + ALLT(STR(vContador)) + ".DBF", ;
AEXCEL WITH "C:MITABLA" + ALLT(STR(vContador)) + ".XLS"
vRango1 = vRango1 + vTotFil
ENDFOR

SCAN
SELECT (vTabla)
COPY TO (ALLT(TMPHOJAS_GRR.ATABLA)) ;
TYPE FOX2X AS 850 ;
FOR RECNO() >= TMPHOJAS_GRR.ARANGO1 AND RECNO() <= TMPHOJAS_GRR.ARANGO2

SELECT TMPHOJAS_GRR
ENDSCAN
***
USE IN (vTabla)

WAIT "Preparando..." WIND NOWAIT

Excel1= CREATEOBJECT("Excel.Application")
WITH Excel1
.VISIBLE = .f. && VISUALIZO EXCEL .T. NO .F.

WAIT "Preparando.." WIND NOWAIT
.Workbooks.ADD && PREPARO UN NUEVO TRABAJO DE EXCEL

WAIT "Creando Hojas" WIND NOWAIT
IF vTotHoj > vNumHojDef
*** Cambia los Nombres de las hojas a : HojaP..
FOR vContador = vNumHojDef TO 1 STEP -1
vNomHoja1 = "Hoja" + ALLT(STR(vContador))
vNomHoja2 = "HojaP" + ALLT(STR((vNumHojDef - vContador) + 1))
.Sheets(vNomHoja1).Name = vNomHoja2
ENDFOR
*** Cambia los nombres de las hojas HojaP.. a Hoja..
FOR vContador = vNumHojDef TO 1 STEP -1
vNomHoja1 = "HojaP" + ALLT(STR(vContador))
vNomHoja2 = "Hoja" + ALLT(STR(vContador))
.Sheets(vNomHoja1).Name = vNomHoja2
ENDFOR
*** Agrega las Hojas que Faltan
FOR vContador = (vNumHojDef + 1) TO vTotHoj
.Sheets.Add
ENDFOR
*** Cambia los Nombres de las Hojas Hoja.. a Hoja_..
FOR vContador = vTotHoj TO 1 STEP -1
vNomHoja1 = "Hoja" + ALLT(STR(vContador))
vNomHoja2 = "Hoja_" + ALLT(STR((vTotHoj - vContador) + 1))
.Sheets(vNomHoja1).Name = vNomHoja2
ENDFOR
ELSE
FOR vContador = 1 TO vNumHojDef
vNomHoja1 = "Hoja" + ALLT(STR(vContador))
vNomHoja2 = "Hoja_" + ALLT(STR(vContador))
.Sheets(vNomHoja1).Name = vNomHoja2
ENDFOR
ENDIF
SELECT TMPHOJAS_GRR
SCAN
WAIT "Preparando la Hoja " + ALLT(TMPHOJAS_GRR.AHOJA) WIND NOWAIT
.Sheets(ALLT(TMPHOJAS_GRR.AHOJA)).Select
.Workbooks.Open(ALLT(TMPHOJAS_GRR.ATABLA))
.Range("A1:AZ65001").Select
.Selection.Copy
.ActiveWindow.ActivateNext
.ActiveSheet.Paste
.Application.CutCopyMode = .F.
.ActiveWindow.ActivateNext
.ActiveWindow.Close
ENDSCAN
.Sheets("HOJA_1").Select
WAIT CLEAR
.VISIBLE = .T.
ENDWITH

WAIT CLEAR

*--USE IN TMPHOJAS_GRR

RELEASE loExcel

RETURN

omar
16 de Diciembre del 2003
debes poner en un boton de comando el siguiente codigo : copy to nom_archivo xl5

para c
16 de Diciembre del 2003
respuesta para C
amigo esto t va ha servir de maravilla.....
es una recopilación de varios códigos mas algunas cosas que le agregé....
* BUSCO UNA SESION DE EXCEL YA ACTIVA:
cErrores = ON("ERROR")
ON ERROR lExcel = .F.
oExcel = GetObject(,"excel.application")
ON ERROR &cErrores
IF TYPE("oExcel") # 'O'
* NO ESTABA ACTIVA. PREPARO UNA NUEVA SESION DE EXCEL:
oExcel = CREATEOBJECT("Excel.Application")
ENDIF
oExcel.VISIBLE = .T. && VISUALIZO EXCEL
oExcel.Workbooks.ADD && PREPARO UN NUEVO TRABAJO DE EXCEL
oExcel.caption = "Nombre del libro” && NOMBRE AL LIBRO
oExcel.Sheets("Hoja1").NAME = "Nombre de la hoja" && NOMBRE A LA HOJA
SELE (THISFORM.GRID1.RECORDSOURCE)
GO TOP
nRows = 0
* EMPIEZO A CARGAR LA HOJA DE EXCEL LEYENDO LA ESTRUCTURA DEL GRID:
WITH THISFORM.GRID1
SCAN
nRows = nRows + 1
FOR nColumn = 1 TO .COLUMNCOUNT
oExcel.Cells(nRows,nColumn) = EVAL(.COLUMNS(nColumn).CONTROLSOURCE)
NEXT nColumn
ENDSCAN
ENDWITH
oExcel.application.rows(1).insert && INSERTA UN FILA PARA COLOCAR LOS TITULOS
oExcel.application.rows(1).font.bold=.t. && COLOCA EL TITULO EN NEGRILLAS
oExcel.application.range("A1").value="Titulo 1 " && TITULO DE LA CELDA A1
oExcel.application.range("B1").value="Titulo 2" && TITULO DE LA SELDA A2

Inaki
16 de Diciembre del 2003
De verdad no c como puede haber alguien en este mundo que pueda creer que VB puede tener alguna posibilidad sobre VFP... cuando quieran les doy algunas demostraciones