Excel

Hola amigos, estoy programando en fpw26 y quiero que me ayuden por favor, necesito saber si puedo enviar datos desde una tabla .dbf a una hoja de calculo excel, con un formato predefinido, es decir, la hoja debe contener encabezados, títulos, pie de página, etc.
Otra pregunta existe la manera de recuperar indices, a través de comandos, desde ya muchas gracias
Respuesta
1
Esto es un ejemplo de la interacción entre fox y excel, espero te sirva
*==========================================
SET SAFETY OFF
*--- Crea tabla de ventas
DO CreaTabla
*--- Genera tabla dinámica
DO GenTabla
close tables all
RETURN
*------------------------------------------
* PROCEDURE CreaTabla
*------------------------------------------
* Crea y llena la tabla de ejemplo y la
* copia
* como archivo tipo .XLS
*------------------------------------------
PROCEDURE CreaTabla
LOCAL lnVend, lnZona, lnMarca, lnmodelo, lnAnio, lnCant
LOCAL laZona(3), laMarca(3), laModelo(3,4)
laZona(1) = "SUR"
laZona(2) = "NORTE"
laZona(3) = "CENTRO"
*---- Cargo las marcas y modelos
laMarca(1) = "FORD"
laMarca(2) = "FIAT"
laMarca(3) = "VOLKSWAGEN"
laModelo (1,1) = "MONDEO"
laModelo (1,2) = "FIESTA"
laModelo (1,3) = "ESCORT"
laModelo (1,4) = "FOCUS"
laModelo (2,1) = "MAREA"
laModelo (2,2) = "BRAVO"
laModelo (2,3) = "SIENA"
laModelo (2,4) = "PALIO"
laModelo (3,1) = "GOL"
laModelo (3,2) = "GOLF"
laModelo (3,3) = "PASSAT"
laModelo (3,4) = "SAVEIRO"
*--- Inicializo la funcion RAND()
lnCant = RAND(-1)
*---- Creo tabla
CREATE TABLE Ventas (Vendedor C(2), Zona C(10), ;
Marca C(10), Modelo C(10), Anio N(4), Cantidad N(4))
*--- Cargo datos ALEATORIOS
FOR lnVend = 1 TO 3
FOR lnZona = 1 TO 3
FOR lnMarca = 1 TO 3
FOR lnmodelo = 1 TO 4
FOR lnAnio = 1998 TO 2000
lnCant = INT(RAND()*9)
IF lnCant > 0
INSERT INTO Ventas ;
(Vendedor, Zona, Marca, Modelo, Anio, Cantidad) ;
VALUES ;
(TRANSFORM(lnVend, "@L 99"), laZona(lnZona), ;
laMarca(lnMarca), laModelo(lnMarca,lnModelo), ;
LnAnio, lnCant)
ENDIF
ENDFOR
ENDFOR
ENDFOR
ENDFOR
Endfor
*--- Guardo como tipo XL5
SELECT Ventas
COPY TO Ventas TYPE XL5
RETURN
ENDPROC
*------------------------------------------
* PROCEDURE GenTabla
*------------------------------------------
* Crea una tabla dinámica en Excel
*------------------------------------------
PROCEDURE GenTabla
LOCAL laPagina(2), laFilas(2), laColumnas(1), lnI, ;
lnReg, lcRango, lcArchivo, loExcel
lnReg = RECCOUNT()
lcRango="A1:F"+ALLTRIM(STR(lnReg+1)) && Rango de celdas de la planilla
lcArchivo= SYS(5) + CURDIR() + "Ventas.xls"
*--- Arrays con los datos de la tabla dinámica
laPagina(1)="Vendedor"
laPagina(2)="Zona"
laFilas(1)="Marca"
laFilas(2)="Modelo"
laColumnas="Anio"
loExcel=CREATEOBJECT("Excel.application")
WITH loExcel.APPLICATION
.VISIBLE = .F. && oculto el trabajo en la aplicacion Excel
.workbooks.OPEN(lcArchivo)
*--- Formato datos numéricos
.Cells.SELECT
.SELECTION.COLUMNS.AutoFit
.RANGE("A1").SELECT
*=== Tabla dinámica ===
*--- Llamo al generador de Tablas Dinámicas
.ActiveSheet.PivotTableWizard(1,lcRango,"","MiTablaDinamica")
*--- Armo la Tabla
.ActiveSheet.PivotTables("MiTablaDinamica").AddFields(@laFilas, @laColumnas, @laPagina)
.ActiveSheet.PivotTables("MiTablaDinamica").PivotFields("Cantidad").ORIENTATION = 4
*--- Selecciono toda la hoja y ajusto columnas
.Cells.SELECT
.SELECTION.COLUMNS.AutoFit
.Sheets("Hoja1").NAME = "Tabla dinámica"
*--- Selecciono la celda donde queda el cursor
.RANGE("A3").SELECT
*--- Grabo planilla y cierro
.VISIBLE = .F.
.ActiveWorkbook.SABE
.workbooks.CLOSE
endwith
RELÉ loExcel
RETURN
endproc
*==========================================

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas